Avatar billede dtloh Nybegynder
09. april 2004 - 17:50 Der er 53 kommentarer og
1 løsning

Nogen der kan se fejlen?

Jar har følgende kode:
Function Char_Update(hvor,hvad)
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; Dbq=" & Server.MapPath("crypt/user.mdb")
    strSQL = "UPDATE user SET " & hvor & " = " & hvad & " WHERE UserId = " & Session("UserId")
    Conn.Execute(strSQL)
    Conn.Close
    Set conn = nothing
    Response.Write("Your wish is my command.")
End Function


Et andet sted har jeg:

Call Char_Update(UserLand,10)

Dette skulle jo gerne opdatere tabellen UserLand til 10. Men får følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i UPDATE-sætningen.

Nogen der kan hjælpe?
Avatar billede thesurfer Nybegynder
09. april 2004 - 17:56 #1
Mon ikke at det skal være: Call Char_Update('UserLand',10)
Med mindre at UserLand er en variabel, der indeholder et eller andet..
Avatar billede thesurfer Nybegynder
09. april 2004 - 17:57 #2
rettelse: Call Char_Update("UserLand",10)
Avatar billede hepou Nybegynder
09. april 2004 - 17:57 #3
Prøv lige at sætte din connection til:


  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & Server.MapPath("crypt/user.mdb.mdb")

og se om det virker
Avatar billede dtloh Nybegynder
09. april 2004 - 17:57 #4
Så får jeg:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.
Avatar billede thesurfer Nybegynder
09. april 2004 - 17:57 #5
Det kunne også være at "user" er et reserveret ord.. hvis det er:
strSQL = "UPDATE [user] SET "
Avatar billede thesurfer Nybegynder
09. april 2004 - 17:58 #6
"Så får jeg:"> Skriv hvad du har gjort.
Avatar billede dtloh Nybegynder
09. april 2004 - 18:00 #7
ok nu har jeg:

Function Char_Update(hvor,hvad)
    Set Conn = Server.CreateObject("ADODB.Connection")
    conn.Open = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & Server.MapPath("crypt/user.mdb")
    strSQL = "UPDATE [user] SET " & hvor & " = " & hvad & " WHERE UserId = " & Session("UserId")
    Conn.Execute(strSQL)
    Conn.Close
    Set conn = nothing
    Response.Write("Your wish is my command.")
End Function

Call Char_Update("UserLand",10)

og får:

Microsoft JET Database Engine (0x80040E10)
Der er ikke angivet nogen værdi for en eller flere krævede parametre.
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:03 #8
Prøv (uden call og parenteser):

Char_Update "UserLand",10

hmm.. den sakl jo ikke "sende noget tilbage", så du kan jo bruge en "sub" i stedet for en "function"..
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:04 #9
sakl = skal
Avatar billede dtloh Nybegynder
09. april 2004 - 18:07 #10
Jeg har fjernet Call, og ændret function til sub, og får nu:
Der kan ikke bruges parenteser ved kald af en Sub
/MMORPG/main.asp, line 31, column 26
Char_Update("UserLand",10)

Så vi må jo nok blive ved den function eller ?
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:07 #11
Prøv (uden call og parenteser):

Char_Update "UserLand",10
Avatar billede hepou Nybegynder
09. april 2004 - 18:09 #12
Prøv lige med

strSQL = "UPDATE user SET Userland = " & hvad & " WHERE UserId = " & Session("UserId")

og se om det virker (udelukkelsesmetoden er altid god ;))
Avatar billede hepou Nybegynder
09. april 2004 - 18:10 #13
eller:

strSQL = "UPDATE user SET Userland = '" & hvad & "' WHERE UserId = " & Session("UserId")
Avatar billede dtloh Nybegynder
09. april 2004 - 18:10 #14
Microsoft JET Database Engine (0x80040E14)
Der er en syntaksfejl i UPDATE-sætningen.
Avatar billede hepou Nybegynder
09. april 2004 - 18:11 #15
hvis det ikke virker så tjek lige om du har en Userland i din db ;)
Avatar billede dtloh Nybegynder
09. april 2004 - 18:11 #16
hehe det har jeg
Avatar billede hepou Nybegynder
09. april 2004 - 18:12 #17
men strSQL = "UPDATE user SET Userland = '" & hvad & "' WHERE UserId = " & Session("UserId") virker ikke?? :/
Avatar billede dtloh Nybegynder
09. april 2004 - 18:13 #18
Nope, giver følgende:

Microsoft JET Database Engine (0x80040E14)
Der er en syntaksfejl i UPDATE-sætningen.

Har det nogen betydning at UserLand er et tal felt?
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:13 #19
"User" er et reserveret ord.. derfor [user]
Avatar billede dtloh Nybegynder
09. april 2004 - 18:15 #20
ok, nu får jeg:
Microsoft JET Database Engine (0x80040E10)
Der er ikke angivet nogen værdi for en eller flere krævede parametre.
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:15 #21
"ACC2000: Reserved Words in Microsoft Access" - http://support.microsoft.com:80/support/kb/articles/Q209/1/87.ASP
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:16 #22
Prøv:
strSQL = "UPDATE [user] SET UserLand = 10 WHERE UserId = " & Session("UserId")

Det kan være at fejlen ligger i Session("UserId").. hvis "UserID" er af type "tekst", skal det være:

... UserId = '" & Session("UserId") & "'"

Men så havde den sagt "type mismatch" (eller ligende)
Avatar billede hepou Nybegynder
09. april 2004 - 18:18 #23
Måske er det den her det er galt med

WHERE UserId = " & Session("UserId")

prøv lige at sætte den til et tal du ved findes i db
Avatar billede hepou Nybegynder
09. april 2004 - 18:18 #24
jeg er da lidt langsom i dag ;)
Avatar billede dtloh Nybegynder
09. april 2004 - 18:18 #25
samm effekt:
Microsoft JET Database Engine (0x80040E10)
Der er ikke angivet nogen værdi for en eller flere krævede parametre.

Min kode er nu:
Sub Char_Update(hvor,hvad)
    Set Conn = Server.CreateObject("ADODB.Connection")
    conn.Open = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & Server.MapPath("crypt/user.mdb")
    strSQL = "UPDATE [user] SET UserLand = 10 WHERE UserId = " & Session("UserId")
    Conn.Execute(strSQL)
    Conn.Close
    Set conn = nothing
    Response.Write("Your wish is my command.")
End Sub

Char_Update "UserLand",10
Avatar billede hepou Nybegynder
09. april 2004 - 18:20 #26
eks.

strSQL = "UPDATE [user] SET UserLand = 10 WHERE UserId = 1
Avatar billede dtloh Nybegynder
09. april 2004 - 18:22 #27
ok nu sker der noget... jeg får:

Datatyperne stemmer ikke overens i kriterieudtrykket.

det må være noget med, at vi prøver at indsætte tekst, i et tal felt?
Avatar billede hepou Nybegynder
09. april 2004 - 18:23 #28
prøv så lige med:

strSQL = "UPDATE user SET " & hvor & " = " & hvad & " WHERE UserId = 1
Avatar billede dtloh Nybegynder
09. april 2004 - 18:25 #29
strSQL = "UPDATE user SET " & hvor & " = " & hvad & " WHERE UserId = 1"

giver:
Microsoft JET Database Engine (0x80040E14)
Der er en syntaksfejl i UPDATE-sætningen.
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:25 #30
10 er et tal :-)
Hvis du vil bruge tekst, skal du putte ' (plinge/apostof) uden om værdien..
tal: 10
tekst: '10'
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:25 #31
Jeg gentager:

"User" er et reserveret ord.. derfor [user]

:-)
Avatar billede dtloh Nybegynder
09. april 2004 - 18:26 #32
ja ok, men hvorfor virker det så ikke?
Avatar billede hepou Nybegynder
09. april 2004 - 18:26 #33
citat dtloh: "Har det nogen betydning at UserLand er et tal felt?" ;)
Avatar billede hepou Nybegynder
09. april 2004 - 18:27 #34
strSQL = "UPDATE [user] SET " & hvor & " = " & hvad & " WHERE UserId = 1
Avatar billede dtloh Nybegynder
09. april 2004 - 18:27 #35
citat hepou: strSQL = "UPDATE user SET " & hvor & " = " & hvad & " WHERE UserId = 1"

ingen [ ] omkring user ;-)

Med [user] får jeg:
Microsoft JET Database Engine (0x80040E07)
Datatyperne stemmer ikke overens i kriterieudtrykket.
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:29 #36
Du har et tal felt, og prøvet på at indsætte tal
ELLER: omvendt :-)

Hvad er type til følgend:
UserLand
UserId

??
Avatar billede dtloh Nybegynder
09. april 2004 - 18:30 #37
UserId = Autonum.
UserLand = Tal
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:31 #38
Mener du ikke "id" i stedet for "UserId"?:

strSQL = "UPDATE [user] SET " & hvor & " = " & hvad & " WHERE id = " & Session("UserId")
Avatar billede dtloh Nybegynder
09. april 2004 - 18:32 #39
nope
Avatar billede dtloh Nybegynder
09. april 2004 - 18:32 #40
men bliver desværre også nødt til at smutte nu.... men tak for hjælpen ellers.

Kigger lige på det igen, når jeg kommer hjem...
Avatar billede hepou Nybegynder
09. april 2004 - 18:33 #41
det har jo ikke noget at sige hvis

strSQL = "UPDATE [user] SET " & hvor & " = " & hvad & " WHERE UserId = 1

ikke virker ;) så er det

" & hvor & " = " & hvad & "

den er gal med
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:36 #42
hmm.. hvad ævler du om ? :-)
Hvilket indlæg?
Avatar billede hepou Nybegynder
09. april 2004 - 18:41 #43
Kommentar: hepou
09/04-2004 18:20:06
eks.

strSQL = "UPDATE [user] SET UserLand = 10 WHERE UserId = 1
Kommentar: dtloh
09/04-2004 18:22:03

ok nu sker der noget... jeg får:

Datatyperne stemmer ikke overens i kriterieudtrykket.

det må være noget med, at vi prøver at indsætte tekst, i et tal felt?

;)
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:43 #44
Ja, men hvilken tekst ? :-)
Jeg kan kun se et tal: 10

Hvilken tekst? :-)
Avatar billede thesurfer Nybegynder
09. april 2004 - 18:44 #45
Kommentar: dtloh
09/04-2004 18:30:14

UserId = Autonum.
UserLand = Tal
Avatar billede hepou Nybegynder
09. april 2004 - 18:45 #46
Ja ser du, den forstod jeg heller ikke :)
Avatar billede hepou Nybegynder
09. april 2004 - 19:01 #47
prøv lige for sjov at skrive

strSQL = "UPDATE [user] SET " & hvor & " = '" & hvad & "'
WHERE UserId = 1;"

eller

strSQL = "UPDATE [user] SET " & hvor & " = " & hvad & "
WHERE UserId = 1;"

:D
Avatar billede hepou Nybegynder
09. april 2004 - 19:12 #48
og hvis det virker så prøv at erstat WHERE-sætningen med:

WHERE UserId = " & Cint(request.querystring("userId"))
Avatar billede dtloh Nybegynder
10. april 2004 - 03:24 #49
Nu virker det. Genstartede og wupti...

Paster lige koden, hvis andre vil se:

Char_Update "UserLand",10

Sub Char_Update(hvor,hvad)
    Set Conn = Server.CreateObject("ADODB.Connection")
    conn.Open = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & Server.MapPath("crypt/user.mdb")
    strSQL = "UPDATE [user] SET " & hvor & " = " & hvad & " WHERE Id = 1;"

    Conn.Execute(strSQL)
    Conn.Close
    Set conn = nothing
    Response.Write("Your wish is my command.")
End Sub

Kan jeg ikke få et svar fra hver af jer, så kan I dele pointene, da jeg ikke lige ved hvem der svarede hvad... ok?
Avatar billede thesurfer Nybegynder
10. april 2004 - 03:40 #50
- Jeg venter lige med at smide et svar..

Ifølge dit indlæg 09/04-2004 18:32:01 (lige efter mit indlæg 09/04-2004 18:31:20), skal der ikke stå "id":
WHERE Id = 1

Du brugte tidligere:
WHERE UserId = " & Session("UserId")

Det er fordi, det ikke er samme record, der skal opdateres hver eneste gang.. men brugerens record..

- Test lige, og se om det stadig virker.
Hvis det ikke virker, prøv med CInt(Session("UserId")).. tror dog ikke at det har nogen betydning..
Avatar billede hepou Nybegynder
10. april 2004 - 11:35 #51
og et svar :)

hvis WHERE ID = 1 virker vil WHERE UserId = " & Session("UserId") nok ikke virke ;)

har du fået det til at virke med WHERE sætningen også??

:D
Avatar billede thesurfer Nybegynder
10. april 2004 - 13:13 #52
- 1 er jo et tal.
- UserId er af typen tal
- Derfor skal Session("UserId") være et tal. Hvis det ikke er det, prøv med CInt(Session("UserId"))

..en forklaring til mit sidste indlæg :-)
Avatar billede hepou Nybegynder
10. april 2004 - 14:43 #53
jeg henviser også bare til det indlæg dtloh skrev 10/04-2004 03:24:56 hvor "WHERE Id=1" virkede. Altså hedder den åbenbart ikke UserId, men Id ;)

(eller har jeg misforstået noget)

:D
Avatar billede hepou Nybegynder
11. april 2004 - 14:34 #54
takker for point

går ud fra at du fik det til at virke

:D
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