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 mit

    SetFieldNull(&m_feldVariable);
    

    🙂

    PS: 0 ist nicht NULL 😉 Kann es daran liegen?



  • Deinem Statement ist nichts hinzuzufügen;

    1. funktionierts mit COleDateTime perfekt, dann muß man auch nichts
      explizit auf 0 setzen

    2. 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 🙂


Anmelden zum Antworten