Avatar billede xinux Nybegynder
24. august 2004 - 14:21 Der er 11 kommentarer og
1 løsning

Opdater indhold

Hey all.

Jeg skal opdatere noget brugerinfo, i forbindelse med et community jeg roder med.

Brugeren har en session("id") med sig.

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("data/databasen.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM user where id='"&session("id")&"'"
rs.Open SQL, Connect, 3, 3

if request.QueryString("action")="update" then

rs("password") = request.form("password")
rs("signature")=request.form("signature")
rs.update
response.Redirect "index.asp"
end if

%>
<form name="edit" method="post" action="edit.asp?action=update">
<br>
<%=rs("username")%><br>
<br>
Password:<br>
<input type="text" name="password" value="<%=rs("password")%>"><br>
Signatur:<br>
<input type="text" name="signature" value="<%=rs("signature")%>">
<br><br>
<input type="submit" name="Submit" value="Update">
</form>

--

Det eneste jeg får er denne fejl:

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

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

edit.asp, 14 (line rs.Open SQL, Connect, 3, 3)

Jeg kan ikke finde fejlen. Plz hjælp :)
Avatar billede locturian Nybegynder
24. august 2004 - 14:30 #1
Paste linie 14?

Men ellers kommer den fejl normalt hvis du fx. prøver at sætte tekst ind i et tal felt, eller hvis du mangler ping ( ' ) rundt om tekst input
Avatar billede xinux Nybegynder
24. august 2004 - 14:39 #2
Har pasted linien

edit.asp, 14 (line rs.Open SQL, Connect, 3, 3)

- Jeg er åben for muligheder hvis der er nemmere eller andre måder at opdatere de felter på..
Avatar billede locturian Nybegynder
24. august 2004 - 14:43 #3
Skal bruge linien lige over den så, linie 13 tak :)

Altså, jeg opdatere altid sådan her (den gode gamle måde ;)

StrSQL = "UPDATE Tabel SET FELT = 'VÆRDI'"
objconn.execute(StrSQL)
Avatar billede fennec Nybegynder
24. august 2004 - 14:45 #4
Prøv sådan:
SQL = "SELECT * FROM user where id="&session("id")

id er sikkert et tal, hvorfor der ikke skal ' omkring.
Avatar billede locturian Nybegynder
24. august 2004 - 14:48 #5
Det er ikke i udtræk den melder fejl, men i indsættelse fennec..
Avatar billede locturian Nybegynder
24. august 2004 - 14:49 #6
Desuden, melder den ikke fejl hvis der er ping om tal :) Det eneste område hvor den er specielt sensitiv over ' om tal, er ved sammenligning og sammenlægninger
Avatar billede xinux Nybegynder
24. august 2004 - 15:00 #7
fennec's løsning virkede..

Men tak for hjælpen ellers locturian..

fennec svar for point :)
Avatar billede locturian Nybegynder
24. august 2004 - 15:02 #8
goddammit - det var da utroligt... nå, der overså man lige noget... :)
Avatar billede fennec Nybegynder
24. august 2004 - 15:03 #9
locturian >>

Prøv lige at tjekke hvordan der bliver indsat. Det er den gode gamle "select resultat" også updatere (jeg ville også hellere bruge "update ....")

linje 14 er "rs.Open SQL, Connect, 3, 3"

Altså gik jeg ud fra at det er "select" sætningen der er problemet.
Avatar billede locturian Nybegynder
24. august 2004 - 15:06 #10
Ja, rigtigt, mig der var lidt hurtig på aftrækkeren... sorry
Avatar billede fennec Nybegynder
24. august 2004 - 15:09 #11
... Nu vi er inde på det, så vil jeg, lige som locturian, anbefale at du bruger den "rigtige" update metode. Du sparer mange resursekrafter på den måde, da du kun laver et kald til databasen.

Dette burde gøre det samme:

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("data/databasen.mdb")


if request.QueryString("action")="update" then
  Connect.execute("update user set password='"& request.form("password")
&"', signature='"& request.form("signature") &"'")
  response.Redirect "index.asp"
end if

set rs = Connect.execute("SELECT * FROM user where id="&session("id"))

%>
<form name="edit" method="post" action="edit.asp?action=update">
<br>
<%=rs("username")%><br>
<br>
Password:<br>
<input type="text" name="password" value="<%=rs("password")%>"><br>
Signatur:<br>
<input type="text" name="signature" value="<%=rs("signature")%>">
<br><br>
<input type="submit" name="Submit" value="Update">
</form>
Avatar billede fennec Nybegynder
24. august 2004 - 15:10 #12
Connect.execute("update user set password='"& request.form("password") &"', signature='"& request.form("signature") &"'")

Der var lige kommet et linjeskift ind hvor det ikke skulle være :o)
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