Avatar billede hardtimes Nybegynder
07. august 2003 - 12:38 Der er 23 kommentarer og
2 løsninger

Opdateringsfejl i access database med ASP

jeg har følgende kode til at opdatere mine felter i databasen:
<%
set conn = server.createobject("ADODB.connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("../db/database.mdb")
conn.open DSN

SQL = "Update users set "
SQL = SQL & "navn= '"& Strnavn &"', "
SQL = SQL & "adresse= '"& Stradresse &"', "
SQL = SQL & "tlfhjem= '"& Strtlfhjem &"', "
SQL = SQL & "tlfarb= '"& Strtlfarb &"', "
SQL = SQL & "tlfmob= '"& Strtlfmob &"', "
SQL = SQL & "email= '"& Stremail &"', "
SQL = SQL & "koen= '"& Strkoen &"', "
SQL = SQL & "alder= '"& Stralder &"', "
SQL = SQL & "ansat= '"& Stransat &"' "
SQL = SQL & "Where adgangskode like "& Strpass &" "


response.write (SQL)
response.flush

'Her eksekveres SQL-sætningen
Conn.execute (SQL)

Conn.Close
Set Conn = Nothing

%>
og jeg får følgende fejlmeddelelse:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/brandnew/brand/retbruger1.asp, line 37


Linje 37 er den linje hvor min conn.execute (SQL) er.
Nogen der kan forklare mig hvad jeg har gjort forkert?
Avatar billede cesil Nybegynder
07. august 2003 - 12:42 #1
prøv lige og skrive response.end i linien efter response.write (sql)
Avatar billede cesil Nybegynder
07. august 2003 - 12:43 #2
prøv lige
SQL = SQL & "Where adgangskode = "& Strpass &" "
Avatar billede medions Nybegynder
07. august 2003 - 12:43 #3
SQL = "Update [users] set "
SQL = SQL & "[navn]= '"& Strnavn &"', "
SQL = SQL & "adresse= '"& Stradresse &"', "
SQL = SQL & "tlfhjem= '"& Strtlfhjem &"', "
SQL = SQL & "tlfarb= "& Strtlfarb &", "
SQL = SQL & "tlfmob= "& Strtlfmob &", "
SQL = SQL & "[email]= '"& Stremail &"', "
SQL = SQL & "koen= '"& Strkoen &"', "
SQL = SQL & "alder= "& Stralder &", "
SQL = SQL & "ansat= '"& Stransat &"' "
SQL = SQL & "Where adgangskode like "& Strpass &" "

//>Rune
Avatar billede medions Nybegynder
07. august 2003 - 12:44 #4
hardtimes> Altså det som fejlmedd. betyder er at du har erklaret en data for en Sting eller en Integer værdi (tekst eller tal værdi) hvor det skulle ha' været det modsatte!

Du kan rette det ved at gå ind i din Access database og tjekke at hvis en kolunne er af typen Tal så skal der IKKE være ' og ' omkring det i din SQL sætning, det skal der KUN være hvis det er Tekst!

//>Rune
Avatar billede medions Nybegynder
07. august 2003 - 12:48 #5
Fejlen som du siger du får: "Too few parameters. Expected 1."
betyder dog også at database driveren tror at du mangler at angive 1 parametr.

Det gør du bare ikke, for du har ikke angivet nogen parametre i din sql-sætning, så det må være to feltnavne du har skrevet forkert, eller som ganske enkelt ikke findes i den database/tabel du forespørger.

Hvis man har problemer med en sql-sætning er det en god idé at udskrive sql-sætningen lige før man normalt ville udføre den.

//>Rune
Avatar billede medions Nybegynder
07. august 2003 - 12:48 #6
Prøv evt. sådan her:

SQL = "Update [users] set "
SQL = SQL & "[navn]= '"& Strnavn &"', "
SQL = SQL & "[adresse]= '"& Stradresse &"', "
SQL = SQL & "tlfhjem= '"& Strtlfhjem &"', "
SQL = SQL & "tlfarb= '"& Strtlfarb &"', "
SQL = SQL & "tlfmob= '"& Strtlfmob &"', "
SQL = SQL & "[email]= '"& Stremail &"', "
SQL = SQL & "koen= '"& Strkoen &"', "
SQL = SQL & "alder= '"& Stralder &"', "
SQL = SQL & "ansat= '"& Stransat &"' "
SQL = SQL & "Where [adgangskode] like "& Strpass &" "

//>Rune
Avatar billede hardtimes Nybegynder
07. august 2003 - 12:50 #7
er der nogen speciel grund til at der er [] om nogen af ordene?
Avatar billede medions Nybegynder
07. august 2003 - 12:53 #8
Ja. Hvis et ord er reseveret i Access kan man sætte [ og ] omkring for at fortælle at den ikke skal betragte det som en funktion eller hvad det nu er det reseveret ord står for!

//>Rune
Avatar billede hardtimes Nybegynder
07. august 2003 - 12:54 #9
oki.. jeg prøver lige
Avatar billede hardtimes Nybegynder
07. august 2003 - 12:59 #10
nu har jeg fjernet ' omkring tallene, sat de navne i klammer som du har gjort, men den bliver ved med at melde den fejl. Jeg kan se at alle felterne bliver udfyldt...
Avatar billede medions Nybegynder
07. august 2003 - 13:02 #11
Prøv at post den SQL sætning du har nu!
Prøv evt. at tjek om dine kolonner er stavet rigtigt!

//>Rune
Avatar billede hardtimes Nybegynder
07. august 2003 - 13:04 #12
<%
set conn = server.createobject("ADODB.connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("../db/database.mdb")
conn.open DSN

SQL = "Update [users] set "
SQL = SQL & "[navn]= '"& Strnavn &"', "
SQL = SQL & "[adresse]= '"& Stradresse &"', "
SQL = SQL & "tlfhjem= "& Strtlfhjem &", "
SQL = SQL & "tlfarb= "& Strtlfarb &", "
SQL = SQL & "tlfmob= "& Strtlfmob &", "
SQL = SQL & "[email]= '"& Stremail &"', "
SQL = SQL & "koen= '"& Strkoen &"', "
SQL = SQL & "alder= "& Stralder &", "
SQL = SQL & "ansat= '"& Stransat &"' "
SQL = SQL & "Where adgangskode like "& Strpass &" "


response.write (SQL)
response.flush

'Her eksekveres SQL-sætningen
Conn.execute (SQL)

Conn.Close
Set Conn = Nothing

%>

Har lige tjekket om de er stavet rigtigt... og det skulle de være...
Avatar billede medions Nybegynder
07. august 2003 - 13:16 #13
Hmm det lyder altså meget underligt!

Prøv lige at send din database til rune@medions.dk i en zippet format, så kigger jeg lige på det!

//>Rune
Avatar billede hardtimes Nybegynder
07. august 2003 - 13:18 #14
Jeg er lige nødt til at smutte et stykke tid... men vender tilbage igen... har sendt dig databasen... og takker for hjælpen :)
Avatar billede cesil Nybegynder
07. august 2003 - 13:18 #15
har du prøvet
SQL = SQL & "Where adgangskode = "& Strpass &" "

når du bruger like mener jeg det skal se således ud

SQL = SQL & "Where adgangskode like "'%& Strpass &%'" "
Avatar billede cesil Nybegynder
07. august 2003 - 13:19 #16
når du tester på adgangskode skal den vel også være helt nøjagtig. Like betyder jo at den bare skal indeholde ordet.
Avatar billede cesil Nybegynder
07. august 2003 - 13:20 #17
sådan her bør den være

SQL = SQL & "Where adgangskode = '"& Strpass &"' "
Avatar billede medions Nybegynder
07. august 2003 - 13:20 #18
Prøv sådan:

set conn = server.createobject("ADODB.connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("../db/database.mdb")
conn.open DSN

SQL = "Update [users] set "
SQL = SQL & "[navn]= '"& Strnavn &"', "
SQL = SQL & "[adresse]= '"& Stradresse &"', "
SQL = SQL & "tlfhjem= "& Strtlfhjem &", "
SQL = SQL & "tlfarb= "& Strtlfarb &", "
SQL = SQL & "tlfmob= "& Strtlfmob &", "
SQL = SQL & "[email]= '"& Stremail &"', "
SQL = SQL & "koen= '"& Strkoen &"', "
SQL = SQL & "alder= "& Stralder &", "
SQL = SQL & "ansat= '"& Stransat &"' "
SQL = SQL & "Where adgangskode = "& Strpass &" "


response.write (SQL)
response.flush

'Her eksekveres SQL-sætningen
Conn.execute (SQL)

Conn.Close
Set Conn = Nothing
Avatar billede hardtimes Nybegynder
07. august 2003 - 13:22 #19
weeee... Cesil det virker sq nu... tusind tak... hvordan deler jeg pointene imellem dig og medions? så i begge får point? da jeg ikke synes i skal gå tomhændede begge to jo
Avatar billede cesil Nybegynder
07. august 2003 - 13:25 #20
sådan der.
Tak for pointene

//Henrik
Avatar billede hardtimes Nybegynder
07. august 2003 - 13:36 #21
det er mig der takker for hjælpen
Avatar billede medions Nybegynder
07. august 2003 - 14:34 #22
Anytime... Men ser sig sq nogle gange blind på kode, havde sq ik' rigtig set der stod LIKE ;o)
Thx 4 poinz

//>Rune
Avatar billede terry Ekspert
17. august 2003 - 12:44 #23
Just a comment here, and in the previous question! (http://www.eksperten.dk/spm/384746) The problem is NOT because you used LIKE but because adgangskode is a string which needs to be enclosed ''


SQL = SQL & "Where adgangskode LIKE '"& Strpass & "'"
OR
SQL = SQL & "Where adgangskode = '"& Strpass & "'"
Avatar billede terry Ekspert
17. august 2003 - 12:45 #24
LIKE or = Can still result in one or MORE records being updated if adgangskode is not unique!
Avatar billede terry Ekspert
17. august 2003 - 12:46 #25
This SQL works!
"UPDATE Table1 SET adgangskode = 'X' WHERE adgangskode LIKE 'A'"
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