Avatar billede wormu Nybegynder
21. juli 2008 - 14:07 Der er 12 kommentarer og
1 løsning

Skrive en dato til sql database

Hej

Jeg har oprettet en sql database, og skal tilgå den fra vb.net. Mit problem er, at jeg skal skrive nogle datoer fra .net og til databasen, men kan ikke lige finde ud af hvordan jeg gør....

Jeg har lavet en form med en masked textboks med formatet Shortdate, og har lavet følgende kode:

Dim cmd As SqlCommand = New SqlCommand("UPDATE Tbl_Personale SET Fodselsdag = " & TxtFodselsdag.Text & " WHERE ID = 2", dbCon)
cmd.ExecuteNonQuery()

Men det er stort set lige meget hvilken værdi jeg indtaster i textboksen (txtfodselsdag), så ender jeg med en eller anden dato tilbage i 1894 (hvis jeg f.eks. indtaster 01-01-1999,og bagefter læser direkte i databasen, så står der 12-07-1894.).

Hvad er det lige jeg gør galt ?
Avatar billede khs1a Nybegynder
21. juli 2008 - 14:13 #1
prøv med en dato i følgende format yyyy-MM-dd f.eks: 1974-06-24
Avatar billede erikjacobsen Ekspert
21. juli 2008 - 14:21 #2
Og du skal have enkeltstroffer: '....', omkring dato-værdien.
Avatar billede wormu Nybegynder
21. juli 2008 - 14:26 #3
Det har jeg prøvet (via en alm. textboks) - uden held... dvs. jeg endte så i 1905 i stedet for 1894. Så vidt jeg kan se, så kan jeg ikke oprette andre datoformater i min "masked textboks" end shortdate "00/00/0000".
Avatar billede wormu Nybegynder
21. juli 2008 - 14:27 #4
enkeltstroffer.... altså
("UPDATE Tbl_Personale SET Fodselsdag = '" & TxtFodselsdag.Text & "' WHERE ID = 2", dbCon) ?
Avatar billede wormu Nybegynder
21. juli 2008 - 14:29 #5
Enkeltstrofferne hjalp... der blev dog stadig byttet rundt på måned og dag...
Avatar billede arne_v Ekspert
21. juli 2008 - 14:58 #6
DateTime ParseExact + brug af parameters !
Avatar billede erikjacobsen Ekspert
21. juli 2008 - 15:11 #7
Der bliver ikke byttet om på måned og dag med formatet: '2008-07-12'
Men ellers er det håbløst gammeldags selv at &-e sin SQL-streng sammen. Lyt til arne_v.
Avatar billede wormu Nybegynder
21. juli 2008 - 15:44 #8
Hmm... lytter da gerne til arne_v.. er bare ret ny i det her, og er ikke helt klar over hvad det er jeg skal gøre anderledes for ikke at være gammeldags :o)
Hvad skal jeg skal gøre/læse for at blive lidt mere moderne ?
Avatar billede erikjacobsen Ekspert
21. juli 2008 - 15:56 #9
Arne har vist skrevet om det: http://www.eksperten.dk/artikler/832 (jeg har ikke selv læst den)
Avatar billede arne_v Ekspert
21. juli 2008 - 16:11 #10
Dim dt As DateTime = DateTime.ParseExact(TxtFodselsdag.Text , "dd-MM-yyyy" , Nothing)

for at laese tiden i det format du vil have.

Og artiklen viser brug af parameters i VB.NET - jeg kan godt give et par linier,
men det er nok vigtigt at forstaa hvad der sker.

Dim cmd As SqlCommand = New SqlCommand("UPDATE Tbl_Personale SET Fodselsdag = @dt WHERE Id = @id", dbCon)
cmd.Parameters.Add("@dt", OleDbType.Date)
cmd.Parameters.Add("@id", OleDbType.Integer)
cmd.Parameters("@dt").Value = dt
cmd.Parameters("@id").Value = 2
cmd.ExecuteNonQuery()
Avatar billede arne_v Ekspert
21. juli 2008 - 16:13 #11
Dim cmd As SqlCommand = New SqlCommand("UPDATE Tbl_Personale SET Fodselsdag = @dt WHERE Id = @id", dbCon)
cmd.Parameters.Add("@dt", SqlDbType.DateTime)
cmd.Parameters.Add("@id", SqlDbType.Int)
cmd.Parameters("@dt").Value = dt
cmd.Parameters("@id").Value = 2
cmd.ExecuteNonQuery()
Avatar billede wormu Nybegynder
22. juli 2008 - 13:28 #12
Tror jeg har set lyset (i hvert fald i det små :o))
Tak for hjælpen - får jeg et "svar" ?
Avatar billede arne_v Ekspert
22. juli 2008 - 15:03 #13
moi ?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester