Announcement

Collapse
No announcement yet.

Numerischen Datentyp NUMERIC(32,16) in einer Anwendung abbilden?

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

  • Numerischen Datentyp NUMERIC(32,16) in einer Anwendung abbilden?

    Hallo,

    in der Datenbanktabelle steht ein Feld mit dem Datentyp NUMERIC(32,16). In Delphi wird dabei dieses Feld als TBCDField abgebildet. Gibt man nun im MS SQL Enterprise Manager den Wert 1234567890123456.1234567890123456 an, so bereitet dies dem Server keine Probleme. In der Delphi-Anwendung erntet man logischerweise einen Überlauf. Wie kann ein numerischer Wert, der diese Genauigkeit benötigt, in Delphi (Version 6 Ent.) abgebildet werden?

    Stephan

  • #2
    Hallo Stephan,<BR><BR>vielleicht kannst du den Wert von Delphi aus als VARCHAR übergeben und wandelst ihn dann erst auf dem Server in NUMERIC(32, 16) um und umgekehrt. Das Ganze könntest du in einer Stored Procedure verpacken. Das wäre mein Tip.<BR><BR>Olaf<BR><BR>PS: Meine Güte, wozu braucht man solche Zahlen

    Comment


    • #3
      Hallo Olaf,

      thx für Deine Antwort.

      NUMERIC(32,16) ist zugegebenermaßen ein Extrembeispiel. Aber die Anwendung benötigt eine sehr sehr große Genauigkeit. Wenn bei einer Zahl a priori nicht feststeht, wieviele Stellen vor und nach dem Komma in Frage kommen, dann muß man sich etwas einfallen lassen. Wenn man beim MS SQL Server z.B. bei einem float-Feld die Zahl 333333,33 eingibt (im Enterprise Manager) und anschließend im Query Analyzer via select * from ... die Daten abruft, so liefert MS SQL hierbei das Ergebnis 333333.33000000002. Dies kann bereits für unsere Berechnungen fatale Auswirkungen haben (die Mathematik kennt die Probleme mit Rundungen, daher gibt es auch hier extra Zweige, die sich ausschließlich mit derartigen Problematiken beschäftigen).

      Oracle liefer im SQL*Plus Worksheet das korrekte Ergebnis. Verwendet man aus diesem Grund keinen float-Wert, sondern einen NUMERIC Wert, dann betrachtet ihn Delphi als TBCDField. Und solche Felder werden lauf Delphi-Online-Hilfe (und auch die Tests hierzu haben dies bestätigt) mit 4 Nachkommastellen gehandhabt. Und dies ist de facto zu wenig. Also ist guter Rat teuer.

      Stepha

      Comment

      Working...
      X