ODBC mit Oracle, CTime, TIMESTAMP_STRUCT Problem
-
Hallo,
ich habe folgendes Problem ( zwar jetzt gelöst, ist mir aber eigentlich unklar ).
Ich muß eine Tabelle aus einem Textfile aufbauen; diese Tabelle beinhaltet
unter anderem DATE Spalten, die allerdings nicht NOT NULL gekennzeichnet sind.Ich benutze die Klassen CDatabase und CResordset mit entsprechenden RFX_Date
Funktionen; da ich auch Daten vor 1969 habe, habe ich die entsprechenden
CTime Variablen und RFX_Date Funktionen mit TIMESTAMP_STRUCT Variablen
ersetzt. Die TIMESTAMP_STRUCT Members werden explizit vor jedem AddNew auf 0 gesetzt.So, was passiert jetzt; lasse ich, wie eigentlich gewollt, die Datumsfelder
auf 0 stehen, kann ich keine Records aufnehmen, es kommt immer der Fehler 'Feldüberlauf in DateTime ...'. Setze ich aber in die TIMESTAMP_STRUCT Strukturen ein realistisches Datum ein, kann ich problemlos meine Inserts ausführen.Meines Wissens können doch aber Datumsfelder durchaus leer sein ?, wo mache ich
den Denkfehler bzw. gibt es hier eine bessere Lösung ?tschüss, Dieter Pfaffl
-
Hi!
Versuchs mal mit COleDateTime.
Und ein Feld NULL setzen geht in CRecordset mitSetFieldNull(&m_feldVariable);
PS: 0 ist nicht NULL
Kann es daran liegen?
-
Deinem Statement ist nichts hinzuzufügen;
-
funktionierts mit COleDateTime perfekt, dann muß man auch nichts
explizit auf 0 setzen -
meinen Weg mit TIMESTAMP_STRUCT kann man auch machen, dann aber
mit SetFieldNull wie von Dir perfekt beschrieben, ich habe mich immer
gefragt, wozu man diese Funktion brauchen könnte, jetzt weiß ichs.
( unter COleDateTime findet man in der Visual C++ 6.0 Hilfe übrigens den
entscheidenden Hinweis zu diesem Problem )
Ist doch immer erschütternd, daß man täglich dazulernt ...
Vielen Dank und tschüss, Dieter
PS: Ich habe demnächst, wenns die Zeit erlaubt, noch eine Frage zu
Oracle, freue mich schon auf Deine Antwort
-
-
Schön, dass es geht.
Das ist für alle DBMS so, ich arbeite auf MS-SQL, da geht das auch.Du kannst gerne fragen, Oracle speziell ist etwas her bei mir, aber vielleicht ist es ja wieder so etwas allgemeines.
Viel Spaß noch