03. juli 2008 - 10:21Der er
10 kommentarer og 1 løsning
indsætte dato i en access database
Hej Jeg har et lille problem med indsættelse af en dato i en accessdatabase. Jeg bruger visual studio 2008 og C#. Jeg vil f.eks. gerne indsætte dags dato noger der bliver lavet en ny record, så der kan sorteres i vilken dag data er indsat. Kan måske laves om til en sql databse så hjælp dertil er også brugbart. På forhånd mange tak
Det er ikke noget problem at gemme datoer i Access. Du opretter bare en ny kolonne i databasen som er af typen dato/klokkeslæt. Når du indsætter i tabellen, skal du bare indsætte dato + tidspunkt i denne kolonne, dette kan du bruge funktionen Now() til.
Har du f.eks. en tabel med 3 kolonner (id, value, dato), skriver du.
insert into tbl(id, value, dato) values(1, 'en værdi', Now())
når jeg prøver at bruge flg. kode får jeg denne fejlmeddelelse:
Exception Details: System.Data.OleDb.OleDbException: Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "03-07-2008 00:00:00".
//** Indsættelse af data i DB ** //Forbindelse til MS Access DB string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("../App_Data/Safe.mdb");
OleDbConnection objConn = new OleDbConnection(strCon);
//Åben forbindelse til DB objConn.Open();
DateTime myDate = DateTime.Today; string dato = myDate.ToShortDateString();
//Byg SQL streng og kald til DB string strSQL = "INSERT INTO person (dato,svar,kode,fornavn,efternavn,adresse,nr,postnr,bynavn,telefon,mobil,boligform,gavekort)" + "VALUES (" + myDate + ",@svar,@kode,@fornavn,@efternavn,@adresse,@nr,@postnr,@bynavn,@telefon,@mobil,@boligform,@gavekort)"; OleDbCommand objCmd = new OleDbCommand(strSQL, objConn);
string strSQL = "INSERT INTO person (dato,svar,kode,fornavn,efternavn,adresse,nr,postnr,bynavn,telefon,mobil,boligform,gavekort)" + "VALUES (@dato,@svar,@kode,@fornavn,@efternavn,@adresse,@nr,@postnr,@bynavn,@telefon,@mobil,@boligform,@gavekort)";
string strSQL = "INSERT INTO person (dato,svar,kode,fornavn,efternavn,adresse,nr,postnr,bynavn,telefon,mobil,boligform,gavekort)" + "VALUES (NOW(),@svar,@kode,@fornavn,@efternavn,@adresse,@nr,@postnr,@bynavn,@telefon,@mobil,@boligform,@gavekort)";
Hvis du gør som keysersoze siger, og sætter en default value på dato kolonnen til Now(), så skal du slet ikke have dato med i INSERT INTO querien!
string strSQL = "INSERT INTO person (svar,kode,fornavn,efternavn,adresse,nr,postnr,bynavn,telefon,mobil,boligform,gavekort)" + "VALUES(@svar,@kode,@fornavn,@efternavn,@adresse,@nr,@postnr,@bynavn,@telefon,@mobil,@boligform,@gavekort)";
Fejlmeddelelsen du får med forslaget fra Arne v, er fordi datatypen i Access er forskellig fra datatypen i C# koden. Hvis kolonnen er af typen "dato og tid" i Access, skal myDate variablen være af typen DateTime. Hvis datoen er skrevet med tekst i Access, skal myDate være en string.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.