Hallo,
also ich möchte in eine Accesstabelle ein Datum/Uhrzeit einfügen. Allerdings bekomm ich dann immer einen Fehler das die Datentypen unverträglich sind. In Access wird das Feld Datum/uhrzeit mit der Formatierung "Standarddatum"verwendet. Hab schon ein wenig in Forum gewühlt und festgestellt das man wohl irgendwie den Wert in einen String konvertieren muss. So richtig verstanden hab ich das aber nicht. Wäre nett wenn mir irgend jemand erklären könnte was ich genau tun muss. Hier mal die meiner Meinung nach relevanten Codeschnipfel.
DateTime Aufnahmedatum;
Aufnahmedatum = folder.CreationTime;
....
currentAlbumRaw.Aufnahmedatum = Aufnahmedatum;
ds.Album.AddAlbumRow(currentAlbumRaw);
...
String InsertCommandString = "INSERT INTO Album (AlbumNr,Aufnahmedatum) VALUES (@AlbumNr,@Aufnahmedatum)";
...
insertCommand.Parameters.Add("@Aufnahmedatum",OleDbType.DBTimeStamp,8,"Aufnahmedatum");
Gruß,
Snowwolf
Hi, man soll zuerst die Suchfunktion des Forums benutzen. Ich beantworte die Frage nicht zum ersten Mal. 😁
Altes Problem, es lieg daran, dass Access und .Net-Datentypen nicht identisch sind, mach aus deinen DateTime-Typ ein String und dann konvertier es mit DATEVALUE in SQL_Befehl zu einem Data-Typ, wlecher Access versteht.
Es ist nicht die einzige Möglichkeit, aber die funktioniert sicher.
Gruss,
Boris
Besten Dank!
Hat ohne Probleme funktioniert. DATEVALUE hab ich garnicht gebraucht, weil ich ja auch die Uhrzeit drin haben will.
Ich krieg das irgendiwe nicht gebacken. Hat jemand mal ein Beispiel?
s = "INSERT INTO tAufgaben ([dDatum], [iKdSn], [iModulNr], [aAufgabe], [iPrioritaet], [fGeplant], [fAufwand], [bErledigt]) VALUES ('"
+ dbconn.CnvDateToStr(dateTimePickerDatum.Value) + "', '"
+ dateTimePickerDatum.Value. + "', '"
+ textBoxKdSn.Text + "', '"
+ textBoxModulNr.Text + "', '"
+ textBoxAufgabe.Text + "', '"
+ comboBoxPrioritaet.Text + "', '"
+ textBoxGeplant.Text + "', '"
+ textBoxAufwand.Text + "', '"
+ checkBoxErledigt.Checked
+ "')";
Innerhalb der SQL Anweisung verwendest Du einfach "DateValue(<datumswert>)". Einfach mal ein wenig ausprobieren, ist ganz leicht.
Das ist eine Sql Funktion!
Folgend ein Beispielt:
string sql = "INSERT INTO Tabelle (DatumUhrzeit) VALUES(DateValue('" + datumUhrzeit + "')"
Ist es jetzt besser zu verstehen?
Die Funktion DateValue ist keine C# oder VB.NET Methode, sondern eine Access-Sql-Methode.
Als Beispielt: "INSERT INTO" ist ja auch keine C# oder VB.NET Methode, sondern eine Anweisung des SQL-Befehlssatzes. Genau so verhält es sich mit der Funktion "DateValue".
Schau Dir mein Beispiel noch mal genau an. Das Wort "DateValue" befindet sich innerhalb des Strings...
Hab mir eine Testtabelle angelegt mit nur einer Spalte: dDate
Mein String:
s = "INSERT INTO tTest(dDatum) VALUES(DateValue('" + dateTimePickerDatum.Value.ToShortDateString() + "')";
Da bekomme ich die Fehlermeldung: Syntaxfehler in der INSERT INTO-Anweisung.
Also, ich hab Dir mal ein paar ein Beispielprojekt zusammengestellt. Das ganze ist ein 2.0 Projekt, wenn Du es in 1.1 brauchst, meld' Dich einfach kurz per Email, ICQ, MSN 🙂
Download.
http://www.veloursnebel.de/Code/DateValueInAccess.zip