Datum mit SQL-Anweisung löschen
Hallo Gemeinde,
in meiner Access Datenbank(HW-Verwaltung) habe ich ein Datumsfeld (Formatierung: 99/99/0000;0;_). In dieses trage ich das Ausleih-Datum ein, wenn ein Gerät
ausgeliehen wird. Jetzt möchte ich mit einer SQL-Anweisung dieses Datum bei Rückgabe "löschen".
Das mache ich folgendem (Autoit-)Code:
Das Problem: Egal was ich in die Variable $sRueckgabe eintrage(also z.B. "", " ", null, NULL, 0000-00-00-00, etc.) bekomme ich einen TypenKonflikt-Fehler.
Kann mir jemand sagen wie ich das Datum gelöscht bekomme?
in meiner Access Datenbank(HW-Verwaltung) habe ich ein Datumsfeld (Formatierung: 99/99/0000;0;_). In dieses trage ich das Ausleih-Datum ein, wenn ein Gerät
ausgeliehen wird. Jetzt möchte ich mit einer SQL-Anweisung dieses Datum bei Rückgabe "löschen".
Das mache ich folgendem (Autoit-)Code:
Local $sRueckgabe = Null
$oConnection = ObjCreate("ADODB.Connection")
$oConnection.Open("Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ=" & $sDatabaseName & "; Exclusive = 1")
$oRecordSet = ObjCreate("ADODB.RecordSet")
$sQuery = "Update " & $sTableName & " SET Leihgerät = False, Ausleihdatum = '" & $sRueckgabe & "', Rückgabeam = '" & _NowDate() & "'" & "WHERE Seriennummer = " & "'" & $sWert1 & "'"
$oConnection.Execute($sQuery)
Das Problem: Egal was ich in die Variable $sRueckgabe eintrage(also z.B. "", " ", null, NULL, 0000-00-00-00, etc.) bekomme ich einen TypenKonflikt-Fehler.
Kann mir jemand sagen wie ich das Datum gelöscht bekomme?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1735637365
Url: https://administrator.de/contentid/1735637365
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
5 Kommentare
Neuester Kommentar
Also 99/99/0000 ist kein Datumsformat sondern wohl eher eine Zeichenkette mit irgendwelchen Formatierungsregeln, um es mal vornehm auszudrücken.
Dein Problem ist die möchtest = NULL setzen aber effektiv wird daraus = 'NULL', also der Text NULL durch die Hochkomata. Der Text NULL ist vermutlich in diesem sonderbaren Feld nicht möglich, daher der Fehler.
Dein Problem ist die möchtest = NULL setzen aber effektiv wird daraus = 'NULL', also der Text NULL durch die Hochkomata. Der Text NULL ist vermutlich in diesem sonderbaren Feld nicht möglich, daher der Fehler.
Zitat von @ukulele-7:
Also 99/99/0000 ist kein Datumsformat sondern wohl eher eine Zeichenkette mit irgendwelchen Formatierungsregeln, um es mal vornehm auszudrücken.
Dein Problem ist die möchtest = NULL setzen aber effektiv wird daraus = 'NULL', also der Text NULL durch die Hochkomata. Der Text NULL ist vermutlich in diesem sonderbaren Feld nicht möglich, daher der Fehler.
Also 99/99/0000 ist kein Datumsformat sondern wohl eher eine Zeichenkette mit irgendwelchen Formatierungsregeln, um es mal vornehm auszudrücken.
Dein Problem ist die möchtest = NULL setzen aber effektiv wird daraus = 'NULL', also der Text NULL durch die Hochkomata. Der Text NULL ist vermutlich in diesem sonderbaren Feld nicht möglich, daher der Fehler.
vielleicht ist es auch NOT NULL gesetzt. Und 0000-00-00-00 ist kein Datum, nirgends auf der Welt.
Davon abgesehen: Dein Datenmodell ist für den Eimer, weil Du nie nachvollziehen können wird, wann und wie oft etwas verliehen war. Irgendwann wird Dich aber jemand danach fragen...
Moin,
mal abgesehen von dem was die Kolleg:innen oben schon korrekter weise bemängelt haben:
Wenn "Ausleihdatum" ein Feld vom Type "Datum/Zeit" in Access ist, dann müsste der abgefragte Wert zwischen # stehen. also z.b. #2020-02-22# und das ohne '
Und warum zur Hölle machst du das mit AutoIT Code und nicht per VB[script|A]?
lg,
Slainte
mal abgesehen von dem was die Kolleg:innen oben schon korrekter weise bemängelt haben:
Wenn "Ausleihdatum" ein Feld vom Type "Datum/Zeit" in Access ist, dann müsste der abgefragte Wert zwischen # stehen. also z.b. #2020-02-22# und das ohne '
Und warum zur Hölle machst du das mit AutoIT Code und nicht per VB[script|A]?
lg,
Slainte
Moin,
Ich tippe, die haben mit AutoIT eine GUI gebastelt...
Ich hätte das zwar in Access gemacht und mit der AccessRuntime aufgerufen, aber nun gut...
@hipfzwirgel
Prüfe, ob das DB-Feld NULL erlaubt. Wenn ja: Schreibe deinen Code so um, dass das NULL nicht im Hochkommata steht, ansonsten wird dein NULL als Text und nicht als "Nichts" erkannt:
Und warum zur Hölle machst du das mit AutoIT Code und nicht per VB[script|A]?
FunFact: AutoIT basiert ja auf BASIC (Link)Ich tippe, die haben mit AutoIT eine GUI gebastelt...
Ich hätte das zwar in Access gemacht und mit der AccessRuntime aufgerufen, aber nun gut...
@hipfzwirgel
Prüfe, ob das DB-Feld NULL erlaubt. Wenn ja: Schreibe deinen Code so um, dass das NULL nicht im Hochkommata steht, ansonsten wird dein NULL als Text und nicht als "Nichts" erkannt:
$sQuery = "Update " & $sTableName & " SET Leihgerät = False, Ausleihdatum = " & $sRueckgabe & ", Rückgabeam = '" & _NowDate() & "'" & "WHERE Seriennummer = " & "'" & $sWert1 & "'"