Avatar billede Kim Neesgaard Seniormester
27. juli 2008 - 16:45 Der er 10 kommentarer og
1 løsning

Brug af DateTimePicker i en SQL

I et Windowsprogram har jeg en DateTimePicker, hvor man kan vælge en dato. Denne dato vil jeg gerne vha. en SQL opdatere en tabel med. Jeg har prøvet med følgende kode:

strSQL = _
"INSERT INTO tblPoster " & _
"(Dato, Kontonummer, EI, RA, IU, Kontonavn, Kontotekst, Delta, Logdato) VALUES " & _
"('" & CDate(dtpPosteringsDato.Text) & "', " & _
AktueltKontonummer & ", " & _
"'" & EI & "', '" & RA & "', '" & IU & "', '" & _
cbSoegKonto.Text & "', '" & _
tbKontotekst.Text & "', " & _
tbDelta.Text & ", " & "GETDATE())"

hvor dtpPosteringsDato er DateTimePickeren, men den virker ikke.

Forslag til hvordan man skal skrive?
Avatar billede arne_v Ekspert
27. juli 2008 - 18:02 #1
Brug parameters !
Avatar billede Kim Neesgaard Seniormester
27. juli 2008 - 18:03 #2
Hvordan konkret?
Avatar billede arne_v Ekspert
27. juli 2008 - 18:09 #3
Du erstatter alle tbXxxx med @xxx i din SQL streng og saa saetter du de parametre
paa din Command.
Avatar billede Kim Neesgaard Seniormester
27. juli 2008 - 18:12 #4
Det har jeg aldrig brugt før - hvordan vil det se ud i eksemplet?
Avatar billede arne_v Ekspert
27. juli 2008 - 18:41 #5
noget lignende dette:

strSQL = _
"INSERT INTO tblPoster " & _
"(Dato, Kontonummer, EI, RA, IU, Kontonavn, Kontotekst, Delta, Logdato) VALUES " & _
"(@postering, @aktuelt, 'EI', 'RA', 'IU', @soeg, @tekst, @delta, GETDATE())"

Dim ins As SqlCommand = New SqlCommand(strSQL, con)
ins.Parameters.Add("@postering", SqlDbType.DateTime)
ins.Parameters.Add("@aktuelt", SqlDbType.VarChar)
ins.Parameters.Add("@soeg", SqlDbType.VarChar)
ins.Parameters.Add("@tekst", SqlDbType.VarChar)
ins.Parameters.Add("@delta", SqlDbType.Int)
ins.Parameters("@postering").Value = CDate(dtpPosteringsDato.Text)
ins.Parameters("@aktuelt").Value = AktueltKontonummer
ins.Parameters("@soeg").Value = cbSoegKonto.Text
ins.Parameters("@tekst").Value = tbKontotekst.Text
ins.Parameters("@delta").Value = CInt(tbDelta.Text)
Avatar billede arne_v Ekspert
27. juli 2008 - 18:42 #6
Avatar billede Kim Neesgaard Seniormester
27. juli 2008 - 18:47 #7
Fint - jeg prøver!
Avatar billede Kim Neesgaard Seniormester
29. juli 2008 - 15:58 #8
Tak for kode og artikel! Det virker - omend det synes lidt omstændigt(!)

Det foresvæver mig, at jeg engang i en lignende situation brugte noget med 'CONVERT' i selv SQL'en og så med en kode 105 på - kan det passe? Jeg kan ikke huske, hvor det var.
Avatar billede arne_v Ekspert
30. juli 2008 - 01:31 #9
Man bør også kunne lave en CONVERT fra et bestemt string format til en DATETIME ved
at angive nummer på formatet.

Men det er langt bedre at bruge parameters.

Du løser tids formatet, du løser problemet med ' i strenge, du får pænere (!= kortere)
kode  og i nogen tilfælde får du bedre performance.
Avatar billede arne_v Ekspert
30. juli 2008 - 01:32 #10
jeg smider et svar
Avatar billede Kim Neesgaard Seniormester
30. juli 2008 - 07:12 #11
Det er bare ok - endnu en gang tak for meget brugbare løsninger!!
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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