Announcement

Collapse
No announcement yet.

BDE und NUMERIC(30,0) in BCB4 Ent. ?

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

  • BDE und NUMERIC(30,0) in BCB4 Ent. ?

    Hallo zusammen.

    Ich habe einen Auftraggeber, der in seiner Oracle 8 Datenbank Felder vom Typ NUMERIC(30,0) als Tabellen-Index benutzt :-/

    Dabei wurden bisher nur maximal 6 Ziffern genutzt. Seit neuestem werden jedoch <B>19 (neunzehn!)</B> Ziffern benutzt. Wenn ich nun per BDE diese Felder auslese, bekomme ich so etwas wie 9,390000000000001E18 (die letzten 3 Stellen fehlen).

    Ich habe es schon mit der TField-Methode <PRE><CODE>GetData()</CODE></PRE> versucht (dann cast auf __int64): erfolglos. Die Daten scheinen tatsächlich als Fließpunktformat vorzuliegen.

    Irgendwo habe ich auch schon so etwas wie<BR>
    <PRE><CODE>TLargeIntField(QRY->FieldByName("ID")).AsString</CODE></PRE><BR>
    gesehen, was aber im Zusammenhang mit BCB6 stand.

    Hat jemand einen Tipp (außer upgraden)?

    Danke.
    Daniel

  • #2
    Ich würde für den Zugriff auf Oracle die BDE wegschmeißen und einen native-Oracle-Client kaufen wie z.B. <a href="http://crlab.com/">ODAC</a>, <a href="http://www.allroundautomations.nl/doa.html">Direct Oracle Access</a> oder <a href="http://www.sqldirect-soft.com/">SQL-Direkt</a>.<br>
    Diese bieten i.d.R. einen viel bessere Unterstützung für solche Spezialdatentypen wie es Oracle z.B. mit Numeric bietet

    Comment


    • #3
      Vielen Dank für den Tipp.<BR>
      <BR>
      Ich habe doch noch eine einfachere und günstigere Lösung gefunden:

      Ich caste den Feldtyp einfach auf Zeichenkette, wodurch mir keine Stellen mehr verloren gehen:
      <PRE><CODE>select cast(ID as VARCHAR2(30)) as ID FROM Tabelle</CODE></PRE>
      Jetzt kann ich mit dem String machen was ich möchte (wie er ist als Bedingung in Abfragen verwenden oder in einen __int64 umwandeln).

      Gruß

      Daniel

      Comment

      Working...
      X