Datum per sql in Datenbank speichern

ChrissiGa

Grünschnabel
Halli Hallo!

Nachdem ihr mir das letzte mal so super geholfen habts hätte ich gleich wieder eine Frage.

Ich habe eine Textbox, dort wird ein Datum eingegeben. Das habe ich so eingestellt, dass es diese kurze schreibweise ist.

Jetzt möchte ich per insert into, dass Datum in die Datenbank speichern. Funkt aber nicht. Bekomme immer eine Fehlermeldung: Typen unverträglich :confused:

Code:
DoCmd.RunSQL "insert into Experiment values (" + Me.Experiment_id.Value + ", " + Me.Date.Value + ", " + Me.Laboratory_id.Value + ");"

was muss ich ändern?

Danke schon mal jetzt für die Hilfe

lg Chrissi
 
Hallo Crissi,
Datum und Datenbanken sind eine Sache für sich.
Jede Datenbank handhabt das Datum anders.
Deshalb muss das Datum in das entsprechende Format konvertiert werden.
Für eine SQL DB sieht dies z.B. so aus.
CONVERT(DATETIME, '" & CStr(Date) & "')

Wenn das Datumsfeld nur zur Info dient, dann mach doch einfach ein varchar Feld daraus.

mfg
Nobby
 
Hallo Nobby,

Danke für deine Antwort. Hab das jetzt ausprobiert. Funktioniert leider nicht.

Fehlermeldung: Syntaxfehler in Zahl in Abfrageausdruck'Convert(DATETIME,12.12.2007)'

was kann ich da machen

Wenn ich das Feld als einen string definier, kann ich dann später noch abfragen was der letzt eingegebene Datensatz war?Nein,oder?

Danke lg Chrissi
 
Hallo,

füge diese Function in ein Modul ein.

Code:
Public Function GetSQLDate(datDate As Date) As String
 
  If IsDate(datDate) Then
  
    GetSQLDate = Format(CDate(datDate), _
      "\#yyyy\-mm\-dd\ hh:nn:ss#", vbMonday, vbFirstFourDays)
  
  End If
 
End Function
Und ändere Deinen Code so:

Code:
DoCmd.RunSQL "insert into Experiment values (" + Me.Experiment_id.Value + ", " + GetSQLDate(Me.Date.Value) + ", " + Me.Laboratory_id.Value + ");"
 
Hallo!

Das funktioniert jetzt ganz super. Jetzt ist noch ein Problem aufgetretten, was mir vorher noch nicht aufgefallen ist.

wenn ich etwas in die Felder Experiment_id eingeb muss ein eine Zahl sein ansonst geht beim speichern in die Datenbank noch mal eine MsgBox auf wo man nochmal die ID eingeben muss. Weißt du vielleicht woran das liegt?

Danke lg Chrissi
 
Wenn Ich wüßte, was Du damit meinst,

wenn ich etwas in die Felder Experiment_id eingeb muss ein eine Zahl sein ansonst geht beim speichern in die Datenbank noch mal eine MsgBox auf wo man nochmal die ID eingeben muss. Weißt du vielleicht woran das liegt?
:confused::confused:

könnte ich Dir vielleicht helfen.
 
Hallo,
prüfe das Eingabefeld mit IsNummeric
und erlaube ein Speichern in die Datenbank nur dann, wenn das Ergebnis True ist.
Sollte dann immer noch ein Fehler auftreten, dann wandle den String in eine Zahl mit
CBbl(<String>) oder CInt(<String>).
mfg
Nobby
 
Hallo!

Wenn ich mit IsNumeric abfrage, dann muss ich eine Zahl eingeben, versteh ich das richtig?

Hab jetzt so probiert:
DoCmd.RunSQL "insert into Experiment values (" + CInt(Me.Experiment_id.Text) + "," + GetSQLDate(Me.Date.Value) + ", " + Me.Laboratory_id.Value + ");"

Bekomme aber eine Fehlermeldung: Typen unverträglich

Was mach ich falsch?

lg Chrissi
 
Zurück