Laden...

Datum/Uhrzeit in Access Tabelle einfügen

Erstellt von Snowwolf3000 vor 19 Jahren Letzter Beitrag vor 18 Jahren 5.677 Views
Snowwolf3000 Themenstarter:in
140 Beiträge seit 2004
vor 19 Jahren
Datum/Uhrzeit in Access Tabelle einfügen

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

B
483 Beiträge seit 2005
vor 19 Jahren

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

Snowwolf3000 Themenstarter:in
140 Beiträge seit 2004
vor 19 Jahren

Besten Dank!
Hat ohne Probleme funktioniert. DATEVALUE hab ich garnicht gebraucht, weil ich ja auch die Uhrzeit drin haben will.

105 Beiträge seit 2006
vor 18 Jahren

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
                        + "')";
1.130 Beiträge seit 2005
vor 18 Jahren

Innerhalb der SQL Anweisung verwendest Du einfach "DateValue(<datumswert>)". Einfach mal ein wenig ausprobieren, ist ganz leicht.

105 Beiträge seit 2006
vor 18 Jahren

Muss ich für diesen Befehl etwas spätzieles einbinden, denn diese Funktion wird mir nicht vorgeschlagen. Im MSDN steht auch , dass dafür VB Voraussetzung ist.

1.130 Beiträge seit 2005
vor 18 Jahren

Das ist eine Sql Funktion!

Folgend ein Beispielt:

string sql = "INSERT INTO Tabelle (DatumUhrzeit) VALUES(DateValue('" + datumUhrzeit + "')"

Ist es jetzt besser zu verstehen?

105 Beiträge seit 2006
vor 18 Jahren

Das ist nicht mein Problem. DIe Abfrage ist ja so weit klar. Nur die Funktion "DateValue" kennt mein VS nicht. Wenn ich das eingebe, müßte es doch blau dargestellt werden (im Editor). Und außerdem kriege ich eine Fehlermeldung beim Debuggen.

1.130 Beiträge seit 2005
vor 18 Jahren

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

105 Beiträge seit 2006
vor 18 Jahren

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.

1.130 Beiträge seit 2005
vor 18 Jahren

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

105 Beiträge seit 2006
vor 18 Jahren

Jetzt fällt es mir wie Schuppen vor den Augen. Ich Trottel hab die letzte Klammer nicht zugemacht. Danke für deine Mühe, jetzt klappts.