Announcement

Collapse
No announcement yet.

Linux Interbase4 und Delphi4 C/S

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Linux Interbase4 und Delphi4 C/S

    Hi, ich hab eine kleine Frage. Ich habe eine Tabelle im Interbase angelegt, welche unter anderem aus Zahlen mit Dezimalstellen enthält. Bei ISQL zeigt er mir die Werte auch korrekt an. Nur wenn ich über die BDE darauf zugreife bekomme ich nur eine Ganzzahl zurückgeliefert. Kann mir jemand sagen, was da schief läuft ???

    vielen Dank schonmal...

    ciao

  • #2
    Hallo,

    um Rundungsfehler zu umgehen, speichert der InterBase Zahlen mit Dezimalstellen intern als INTEGER, wenn sich der Datentyp in diesem Wertebereich unterbringen lässt (im Wertebereich 2 hoch 31 können 9 Stellen bequem untergebracht werden). So wird zum Beispiel aus einem DECIMAL(9,2) immer ein INTEGER-Feld, indem der InterBase den Wert intern mit 100 multipliziert. Normalerweise macht der InterBase-Client diese Optimierung wieder rückgängig.

    Wenn im eigenen Delphi-Programm die Nachkommastellen unterschlagen werden, würde ich folgendes probieren: <br>
    1. Persistente TField-Instanz für die Tabellenspalten anlegen (Feld-Editor) <br>
    2. TField-Eigenschaft <b>DisplayFormat</b> auf <b>'#.00'</b> <br>
    3. TField-Eigenschaft <b>Precision</b> und <B>Size</b> prüfen <br>
    4. Wenn Delphi nur ein TIntegerField angelegt hat, <b>Enable BCD</b> (BDE) aktivieren.

    P.S: In meinem Buch <i>Client/Server Datenbankentwicklung mit Delphi</i> befassen sich die Seiten 454 bis 466 mit diesem Problem

    Comment

    Working...
    X