Announcement

Collapse
No announcement yet.

dbExpress + Oracle => Fehler ORA-01722: Ungültige Zahl [Delphi7]

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

  • dbExpress + Oracle => Fehler ORA-01722: Ungültige Zahl [Delphi7]

    Hallo allerseits,

    habe ein Problem mit dbExpress und Oracle und beim Versuch einen Datensatz zu Updaten <br>bekomme ich eine Oracle-Fehler => ORA-01722: Ungültige Zahl...

    Ich habe eine SQL-Connection mit Einstellungen für Oracle und der Connect zur Datenbank funktioniert auch. <br>Das SQLDataSet bekommt die SQLConnection zugewiesen, dem DataSetProvider weise ich als DataSet das SQLDataSet zu.<br>Das ClientDataSet wird über den Provider verbunden, DataSource hat als DataSet das ClientDataSet. <br>Das DBGrid wird mit der DataSource verbunden.

    Also im Prinzip so:

    SQLConnection => SQLDataSet => DataSetProvider => ClientDataSet => DataSource => DBGrid

    Nun werden die Daten im Grid angezeigt und alles funktioniert scheinbar.
    <br>Die Orcale-Tabelle hat mehrere Felder vom Typ VarChar2, Number und Date.
    <br>Ändere ich nun ein Feld vom Typ VarChar2 (alle anderen Felder bleiben dabei unverändert) <br>und rufe ClientDataSet.ApplyUpdates(0) auf, dann bekomme ich diesen Oracle Fehler ORA-01722: Ungültige Zahl...

    Ich gehe davon aus das es etwas mit den Number-Feldern zu tun hat, eventuell Probleme mit . und ,

    Bin mir da aber nicht sicher... Kennt jemand das Problem?
    Was mache ich falsch?

    Wenn ich das gleiche mit einer MSSQL-Datenbank mache funktionert das wunderbar, allerdings nicht mit Oracle?!?!!

    Für jeden Tipp und Hinweis bin ich sehr dankbar!

    Gruß
    Joachim<br><br>

  • #2
    Hab' das Problem nur so lösen können:<PRE>
    <B>procedure TTestForm.SQLConnectionAfterConnect(Sender: TObject);
    begin
    SQLConnection.Execute('alter session set NLS_NUMERIC_CHARACTERS=''.,''', NIL,NIL);
    end;
    </B>
    </PRE&gt

    Comment


    • #3
      oder in der Registry entsprechend hinzufügen/setzen:

      HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\

      <B>NLS_NUMERIC_CHARACTERS REG_SZ ".,"</B>

      oder den Key 'NLS_LANG' entsprechend der Servereinstellungen einstellen...

      bei mir von

      <B>NLS_LANG REG_EXPAND_SZ "GERMAN_GERMANY.WE8ISO8859P1"</B>

      auf

      <B>NLS_LANG REG_EXPAND_SZ "AMERICAN_AMERICA.WE8ISO8859P1"</B&gt

      Comment

      Working...
      X