Avatar billede psycho42 Nybegynder
07. november 2005 - 11:33 Der er 21 kommentarer og
1 løsning

Update hvor data er gemt i variabler

Hej

Jeg har forsøgt at lave et update script der kan opdatere en profil, men jeg får en fejl i min SQL sætning. =
--------------------------------------------------------------------
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.
--------------------------------------------------------------------
Jeg har skrevet følgende i sql'en:
------------------------------------------------------------------
<%
form_password = request.form("password")
form_adresse = Request.form("adresse")
form_by = Request.form("by")
form_skole = Request.form("skole")
form_telefon = Request.form("telefon")
form_email = Request.form("email")
form_id = session("id")

strSQL = "UPDATE users SET [user_password]='" & form_password
strSQL = strSQL & "',[user_adresse]='" & form_adresse
strSQL = strSQL & "',[user_by]='" & form_by
strSQL = strSQL & "',[user_skole]='" & form_skole
strSQL = strSQL & "',[user_telefon]=" & form_telefon
strSQL = strSQL & "',[user_email]=" & form_email
strSQL = strSQL & "WHERE [user_id]=" & form_id

Set rs = Connect.Execute(strSQL)

response.write "<font color='green'> Bruger opdateret </font>"
%>
-------------------------------------------------------------------
Jeg gætter på at jeg bruger forkert seperatorer, men kan ikke se hvor det er henne...

Jeg er i gang med dette til et projekt - håber der er nogen der kan hjælpe mig.

På forhånd tak
Avatar billede thesurfer Nybegynder
07. november 2005 - 12:04 #1
Det er sikkert fordi du har glemt mellemrum ved WHERE: strSQL = strSQL & " WHERE [user_id]=" & form_id


Jeg går ud fra, at form_email er tekst? og det samme med feltet user_email i databasen?

Hvis ja, skal det være:

strSQL = strSQL & "',[user_email]='" & form_email & "'"

/theSurfer
Avatar billede softspot Forsker
07. november 2005 - 12:11 #2
Prøv denne SQL:

strSQL = "UPDATE users SET [user_password]='" & form_password & "'"
strSQL = strSQL & ",[user_adresse]='" & form_adresse & "'"
strSQL = strSQL & ",[user_by]='" & form_by & "'"
strSQL = strSQL & ",[user_skole]='" & form_skole & "'"
strSQL = strSQL & ",[user_telefon]=" & form_telefon
strSQL = strSQL & ",[user_email]='" & form_email & "' "
strSQL = strSQL & "WHERE [user_id]=" & form_id

Email er vel en streng. I øvrigt har jeg rykket de afsluttende apostroffer op på samme linie som den værdi de tilhører, så er det lettere at gennemskue hvor de hører til (den anden notation er lidt for "doven" :)).

Generelt set tror jeg lige du skal checke værdierne med de enkelte felters datatyper...
Avatar billede psycho42 Nybegynder
07. november 2005 - 12:20 #3
tak for responsen. Detvar hurtigt : ) - Prøvede dit forslag "softspot" - Det virker og alligevel ikke... - Jeg får ingen fejl, men databasen bliver ikke opdateret

Er der noget som jeg mangler, når man opdatere db'en ? - ska nok gi' point : )
Avatar billede softspot Forsker
07. november 2005 - 12:24 #4
Hvor kommer dine form_xxx værdier fra og er der indhold i alle de værdier som lægges i talfelter i datatbasen? Prøv evt. at udskrive sql-sætningen til browseren og stop renderingen af siden umiddelbart efter, så du kan se hvad der ligger i strengen (og det skal helst være inden du udfører sql i databasen :))
Avatar billede psycho42 Nybegynder
07. november 2005 - 12:36 #5
form_xxx værdierne kommer fra en form, som automatisk bliver udfyldt med de værdier de har lige med det samme - alle værdier som skal være tal er udfyldt - de bliver gemt i variabler( de variabler jeg skrev som det første i mit indlæg).

Hvordan udskriver jeg SQL-sætningen ? :D - ( er nok lidt newb)
Avatar billede thesurfer Nybegynder
07. november 2005 - 12:42 #6
Sådan:
strSQL = "UPDATE users SET [user_password]='" & form_password & "'"
strSQL = strSQL & ",[user_adresse]='" & form_adresse & "'"
strSQL = strSQL & ",[user_by]='" & form_by & "'"
strSQL = strSQL & ",[user_skole]='" & form_skole & "'"
strSQL = strSQL & ",[user_telefon]=" & form_telefon
strSQL = strSQL & ",[user_email]='" & form_email & "' "
strSQL = strSQL & "WHERE [user_id]=" & form_id

response.write strSQL
response.end

/theSurfer
Avatar billede psycho42 Nybegynder
07. november 2005 - 12:59 #7
Tror jeg har fundet problemet.. I kender det nok også selv... En hjerne fis : ) sad og rettede i den eneste del af formen som ikke blev gemt : q - tak for jeres hjælp : -) - point on teh way -

Et sidste spørgsmål: - Hvis jeg i samme sætning ville forøge en værdi (addere) i opdateringen, hvor kunne det så se ud ?
Jeg har prøvet med:
<%
form_klip = request.form("clip")

StrSQL = "UPDATE users SET [user_klip]+=" & form_klip
StrSQL = strSQL & "WHERE [user_id]=" & session("id") 

....
%>
Men for selvf fejl :/ ( Syntax error in UPDATE statement.)
Avatar billede psycho42 Nybegynder
07. november 2005 - 13:00 #8
Btw. - Jeg kan vel ikke give point uden I laver et "Svar" kan jeg ?
Avatar billede thesurfer Nybegynder
07. november 2005 - 13:05 #9
Prøv med:
StrSQL = "UPDATE users SET [user_klip]=" & CInt(form_klip) + 1

jeg går ud fra, at "form_klip" er den sidste/ældste værdi, som du vil lægge 1 til?

Du har ret: man kan ikke give points, hvis der ikke er et "svar".

- Svar :-)

/theSurfer
Avatar billede psycho42 Nybegynder
07. november 2005 - 13:13 #10
Jeg ville faktisk lægge form_klip(nye klip) værdien til user_klip(mængden af gamle klip) (jeg forsøger at lave et system hvor man kan "købe" flere klip til et klippekort)

Gætter på jeg kan gøre således:
(gemme den gamle værdi i en variable(form_kli_old), hvilket kommer fra "user_klip"
'StrSQL = "UPDATE users SET [user_klip]=" form_klip + form_klip_old
ville dette virke ?

Hvad gør CInt?
: o)
Avatar billede thesurfer Nybegynder
07. november 2005 - 13:22 #11
Hvis user_klip er 4, og brugeren får 2 klip mere.. er form_klip så 2 eller 6 (user_klip + form_klip = 4 + 2) ?


CInt konverterer det man giver den, til type TAL.

Du finder CInt under Math: http://www.w3schools.com/vbscript/vbscript_ref_functions.asp

/theSurfer
Avatar billede psycho42 Nybegynder
07. november 2005 - 13:28 #12
heh - Det begynder at bliver lidt forvirrende... Men:

user_klip (det der står i databasen kan f.eks. være 2 

Der bliver så købt 4 klip, hvilket form_klip så vil være

i alt bliver det så til 6 klip. som er det der skal figurer som den nye værdi i databasen for "user_klip" feltet :)

Det er super duper med den hjælp : )
Avatar billede thesurfer Nybegynder
07. november 2005 - 13:37 #13
Så hedder det:

StrSQL = "UPDATE users SET [user_klip]=[user_klip] + " & CInt(form_klip)

Hvorfor har du egentligt ændret "strSQL" til "StrSQL"? :-)

/theSurfer
Avatar billede psycho42 Nybegynder
07. november 2005 - 13:38 #14
Sådan nu virker det også : )

Mange tak for hjælpen thesurfer - jeg gjorde således med nye klip:

form_klip = request.form("clip")
StrSQL = "UPDATE users SET [user_klip]=" & form_klip + session("user_klip_old")
StrSQL = strSQL & " WHERE [user_id]=" & session("id") 

- hvor user klip bliver gemt i starten - og igen bliver sessionen sat til den nye værdi efter købet, så der ikke opstår fejl ved genkøb : o) - super mange gang tak for hjælpen
Avatar billede thesurfer Nybegynder
07. november 2005 - 13:40 #15
Så venter vi bare på at softspot lægger et svar, så vi kan få lukket.. :-)

/theSurfer
Avatar billede psycho42 Nybegynder
07. november 2005 - 13:43 #16
jeps - Ja hvorfor har jeg gjort det(str=Str)? c/p :D - Jeg har forsøgt at give dig point, ved ikke om det virker :?
Avatar billede thesurfer Nybegynder
07. november 2005 - 13:44 #17
Du skal altid markere dem der skal have points.. også selv om der kun er 1 bruger.

Du kan også markere flere brugere, ved at holde CTRL-tasten nede, når du klikker på navnene.

Navnene findes til venstre for "skrive-feltet".. :-)

/theSurfer
Avatar billede psycho42 Nybegynder
07. november 2005 - 13:47 #18
done : ) - I think ! - du har også fået "karma" :D
Avatar billede softspot Forsker
07. november 2005 - 13:52 #19
Giv point til thesurfer... jeg var ikke helt så aktiv i slutspurten.
Avatar billede thesurfer Nybegynder
07. november 2005 - 13:56 #20
Jeg takker for karmaen :-)

softspot vil ikke have points..
Du kan nu bare markere mit navn i boksen til venstre, og derefter klikke på Accepter-knappen.. :-)

/theSurfer
Avatar billede psycho42 Nybegynder
07. november 2005 - 14:03 #21
sådanner : -) takker og bukker
Avatar billede thesurfer Nybegynder
07. november 2005 - 14:05 #22
Takker for points :-)

/theSurfer
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