Avatar billede hejmand Nybegynder
23. oktober 2002 - 10:03 Der er 9 kommentarer og
1 løsning

Updatering af db

Jeg har et problem med at få værdierne i en database opdateret. Jeg har 'bygget' en form, hvor hvert felt har navn efter det tilsvarende felt i min db. Nedenstående kode giver fejlen: Object required: 'fornavn' (som er det første feltnavn). Er der nogen, der umiddelbart kan se, hvad det kan skyldes?


For Each item In request.form
  strSQL1 = "UPDATE " & tabel & " SET " & item.name & " = '" & item.value & "' WHERE id_" & tabel & " = " & post
  set rs1 = myConn.Execute(strSQL1)
Next
Avatar billede thomas_regin Nybegynder
23. oktober 2002 - 10:17 #1
Prøv at skrive følgende:

For each item in Request.Form
strSQL1 = "UPDATE " & tabel & " SET " & item.name & " = '" & item.value & "' WHERE id_" & tabel & " = " & post
Response.Write strSQL1 & "<br><br>"
Next

Så kan du se hvad funktionen prøver at komme ind i din database for hvert step i operationen! Det kunne tyde på, at der er en variabel der ikke bliver initialiseret hele vejen gennem dit loop!

Mvh,

Thomas Regin.
Avatar billede hejmand Nybegynder
23. oktober 2002 - 10:22 #2
Får stadig samme fejlmelding, så jeg kan ikke engang få lov at se, hvad den skriver ud til mig...
Avatar billede thomas_regin Nybegynder
23. oktober 2002 - 10:24 #3
Aah.. Så kan du ihvertfald udelukke, at det har noget med Databasen at gøre.

I hvilken linie opstår fejlen!?

Mvh,

Thomas Regin.
Avatar billede hejmand Nybegynder
23. oktober 2002 - 10:27 #4
Fejlen opstår i denne her:
strSQL1 = "UPDATE " & tabel & " SET " & item.name & " = '" & item.value & "' WHERE id_" & tabel & " = " & post
Avatar billede thomas_regin Nybegynder
23. oktober 2002 - 10:31 #5
Okay!

Så kommer jeg jo lige i tanker om, at man ikke kan bruge Item.name når man looper igennem en Request.Form collection!

Der kan du bruge Request.Form(item) eller bare Item.

Request.Form(Item) = Felt navnet
Item = Værdien i feltet

Ergo skal den hedde:

strSQL1 = "UPDATE " & tabel & " SET " & Request.Form(item) & " = '" & Item & "' WHERE id_" & tabel & " = " & post

Mvh,

Thomas Regin.
Avatar billede hejmand Nybegynder
23. oktober 2002 - 10:43 #6
Jamen hallo! Det er jo smukt. Den udskriver raskt sql-strenge i flæng. Men! Så skal det jo også eksekveres. Jeg indsatte det her:
rs1 = myConn.Execute(strSQL1)
, og jeg får nu fejlen:
Too few parameters. Expected 1.
Warum? Hvad gør jeg så nu?
Avatar billede hejmand Nybegynder
23. oktober 2002 - 10:52 #7
Fandt selv fejlen i eksekveringen. Der var byttet rundt på Request.Form(Item) og Item. Det er åbenbart den modsatte betydning. 1000 tak for hjælpen :)
Avatar billede thomas_regin Nybegynder
23. oktober 2002 - 10:53 #8
Du kan ikke bare skrive

rs1 = myConn.execute(strSQL1)

Du skal enten bare nøjes med:

myConn.Execute(strSQL1)

eller

Set rs1 = myConn.execute(strSQL1)

Jeg vil foreslå den øverste, hvis du ikke skal bruge rs1 til noget, da du herved ikke bruger løs af maskinens ressourcer ved hele tiden at initialisere et unødvendigt objekt!

Mvh,

Thomas REgin.
Avatar billede thomas_regin Nybegynder
23. oktober 2002 - 10:56 #9
Jamen, det var jo herligt! :)

Men tag stadig et kig på ovenstående! :)

Mvh,

Thomas Regin.
Avatar billede hejmand Nybegynder
23. oktober 2002 - 11:02 #10
Har rettet til den første. Og endnu en gang tak!
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
Kurser inden for grundlæggende programmering

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