TDBF, ftfloat erkennt keine Nachkommastellen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
pjensen
Beiträge: 77
Registriert: Fr 27. Jul 2007, 08:43
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Nahe Flensburg

TDBF, ftfloat erkennt keine Nachkommastellen

Beitrag von pjensen »

Hallo,

ich will die Werte einer dbase-Datei teilweise in eine andere importieren.

Die neu wird wie folgt erstellt:

Code: Alles auswählen

with LTAXDatenbank.FieldDefs do
   begin
      Clear;
      Add('Datum',ftDate,10,True);
      Add('Nummer',ftInteger,10,True);
      Add('Konto',ftInteger,10,True);
      Add('Betrag',ftFloat,10,True);
      Add('Buchtext',ftString,100,True);
      Add('UST',ftInteger,3,True);
   end;
Hier ein Teil des Importierens:

Code: Alles auswählen

while NOT SMoneyDatenbank.EOF do
    begin
      with LTaxDatenbank do
      begin
        append;
        ...
//        Fields[3].AsFloat:=cleandot(SMoneyDatenbank.Fields[7].AsString);        // Betrag
          Fields[3].AsFloat:=33.33;
        ...
      end;
      SMoneyDatenbank.Next;
   end;
Das Importieren von Strings funktioniert soweit.

Bei dem Feld "Betrag", welcher als ftfloat angelegt wurde, werden die Nachkommastellen aber nicht mit eingelesen. Deshalb habe ich es versuchsweise mit "Fields[3].AsFloat:=33.33;" probiert. Auch das klappt nicht. Da steht jetzt 33. (Mit OpenOffice geöffnet).

In der entstandenen Datei sind alle Werte für Betrag ohne Nachkommastellen.

Was mache ich falsch ?

MfG, Peter
Zuletzt geändert von monta am So 21. Sep 2008, 15:51, insgesamt 1-mal geändert.
Grund: Codetags gesetzt.

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: TDBF, ftfloat erkennt keine Nachkommastellen

Beitrag von marcov »

(relayed) response of TDBF developer:

12:26 oliebol: it's not possible to create floating point fields with
decimal places using the tdataset-compatible interface
12:27 problem is that you have to specify the number of decimal places
12:27 this can be done using the DbfFieldDefs
12:28 see page 6 of tdbf pdf
12:29 'One problem of VCL TFieldDefs is their inability to store the
size and precision of float fields. To use this ability you need
to create
12:29 a set of TDbfFieldDefs instead.

Kuster Peter
Beiträge: 205
Registriert: So 2. Dez 2007, 20:47
OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
CPU-Target: xxBit
Wohnort: Schweiz

Re: TDBF, ftfloat erkennt keine Nachkommastellen

Beitrag von Kuster Peter »

Was auch noch wichtig ist, auch wenn Du nur 2 Stellen nach dem Komma willst, mind. 3 deklarieren, sonst geht es nicht. Wenn Du 3 Stellen nach dem Komma daklarierst, nimmt es nur die ersten 2. Ist ne Macke die ich mal rausgefunden habe. Kannste auch probieren anstatt float als currencies zu definieren.

Peter

pjensen
Beiträge: 77
Registriert: Fr 27. Jul 2007, 08:43
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Nahe Flensburg

Re: TDBF, ftfloat erkennt keine Nachkommastellen

Beitrag von pjensen »

Danke an marcov und Peter,

es läuft jetzt.

Antworten