COleDateTime::null und Access
-
Bei mir liegt folgendes Problem vor:
Ich bearbeite über DAO eine Access-Datenbank. Ein Feld vom Typ "Datum" soll als NULL-Wert gekennzeichnet werden.m_pSetEdit(); m_pSet->m_Austritt.SetStatus(ColeDateTime::null);Das wird soweit auch ganz brav durchgeführt. Auch nach
m_pSet->Update()kann man im Debugger immer noch ablesen, dass das "null" korrekt übertragen wurde.
Wenn ich nunm_pSet->Requery();ausführe und den bearbeiteten Satz wieder neu einstelle, habe ich auf einmal als Status COleDateTime::valid!
Hat irgendwer eine Idee woran das liegen kann?
[eidit]Siehe übernächsten Beitrag[/edit]
[ Dieser Beitrag wurde am 08.05.2003 um 10:03 Uhr von Kauz01 editiert. ]
-
Wollten die schwedischen Eltern ihr Kind nicht Superman nennen, was von den Behörden als invalid eingestuft wurde?
-
Korrigiere:
das invalid von oben bitte durch null ersetzten.
Ich hatte nur das Ganze auch schon mit invalid statt null versucht. Der Effekt war der gleiche.[ Dieser Beitrag wurde am 08.05.2003 um 10:03 Uhr von Kauz01 editiert. ]
-
Darum geht es ja gar nicht!
Um ein Datum an eine DB zu schicken, wird eine Variable vom Typ DATE = double verwendet. Dieser Wert bleibt valid, selbst wenn Du den Status von COleDateTime auf invalid oder 0 setzt.
-> Du musst einen invaliden Datumswert setzen. Allerdings weiss ich nicht, welcher das ist
-
Da bin ich skeptisch. Ich hab eine andere Stelle im Projekt, an der der das Speichern eines Datumswertes mit Status null problemlos funktioniert. Leider kann ich noch nicht nachvollziehen, was da anders ist. Deshalb die Anfrage.
-
Dann schau doch mal mit dem Debugger, welchen Wert COleDateTime dann hat.
-
Wie oben beschrieben.
Der Status wird nach dem Edit() auf COleDateTime::null gesetzt. Dann ist er eingetragen und auch im Debugger erkennbar. Nach ausführen des Updates zeigt der Debugger immer noch an, dass der Status auf COleDateTime::null steht. Wenn anschließend ein Requery() durchgeführt wird und der Satz wieder neu eingestellt wird, hat er im Code mit Problemen auf einmal den Status COleDateTime::valid. Im anderen Code bleibt der Status COleDateTime::null erhalten.[edit]Konnte grad feststellen, dass ein FindFirst("....") genügt. Requery() ist gar nich nötig um dieses Verhalten zu erzeugen. :([/edit]
[ Dieser Beitrag wurde am 08.05.2003 um 10:49 Uhr von Kauz01 editiert. ]
-
Für alle, die es interessiert:
Um einem Feld einen Nullwert zuzuweisen müssen die Methoden SetFieldNull(void* pv) und SetFieldDirty(void* pv) aufgerufen werden.
-
Nunja, das wollte ich Dir schon die ganze Zeit mitteilen, dass man mit COleDateTime keine invalide Zeit an eine DB übertragen kann.
-
Von RenéG:
-> Du musst einen invaliden Datumswert setzen. Allerdings weiss ich nicht, welcher das ist
Nunja, das wollte ich Dir schon die ganze Zeit mitteilen, dass man mit COleDateTime keine invalide Zeit an eine DB übertragen kann.
Da muss ich dich dann ganz falsch verstanden haben. Datum ist halt zweideutig.
