Avatar billede bgoalias2001 Nybegynder
22. maj 2003 - 20:46 Der er 14 kommentarer og
1 løsning

problem med sql

jeg har dette script...

<%
  dim Conn
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\db\bruger.mdb"

If Request("mode") = "Check" then
strOpdater = request("note")
navn = session("Navn")
strSQL = "Update bruger Set Note='" & strOpdater &"' Where Navn='" & navn & "'"
Conn.Execute(strSQL)
else
  Sql ="SELECT * FROM bruger WHERE Navn= '" & session("Navn") & "';" 
  Set rs = Conn.Execute(Sql)
strNote = rs("Note")
end if
%>
              <!--#include file="top.asp"--><BR>
<% = session("Navn") %>
<center>
<form method="POST" action="bruger_notat.asp" onSubmit="return validerBesked()">
<input type="hidden" name="mode" VALUE="Check">
<textarea name="note" rows="20" cols="70%"><%=strNote%></textarea><BR>
<input class="text" type="submit" value="Gem" name="submit" style="font-family: Verdana; font-size: 8 pt">
</form>
<%
Conn.Close
Set Conn = Nothing
%>

den melder følgende fejl..

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i UPDATE-sætningen.
/bruger_notat.asp, line 10
Avatar billede eagleeye Praktikant
22. maj 2003 - 20:50 #1
Du bør indsætte en replace og skift en ' ud med to '' så der ikke sker fejl hvis du i teskten skriver noget med ' i. Eks Ole's bil.

strOpdater = Replace(request("note"),"'","''")
Avatar billede eagleeye Praktikant
22. maj 2003 - 20:52 #2
Prøv at udskrive SQL i stedet for at Execute den og vis resultatet:

strSQL = "Update bruger Set Note='" & strOpdater &"' Where Navn='" & navn & "'"
Response.Write strSQL
'Conn.Execute(strSQL)
Avatar billede erikjacobsen Ekspert
22. maj 2003 - 21:00 #3
strSQL = "Update bruger Set [Note]='" & strOpdater &"' Where Navn='" & navn & "'"

måske?
Avatar billede bgoalias2001 Nybegynder
22. maj 2003 - 21:13 #4
sql
Avatar billede bgoalias2001 Nybegynder
22. maj 2003 - 21:15 #5
strSQL giver dette resultat når jeg udskriver den...
Update bruger Set Note='f' Where Navn='Bjørn Olesen'
Avatar billede eagleeye Praktikant
22. maj 2003 - 21:17 #6
Så er det som erikjacobsen har skrevet, note er reserveret ord.
Avatar billede bgoalias2001 Nybegynder
22. maj 2003 - 21:22 #7
det gør bare at den ikke skriver noget i db'en men melder heller ikke fejl..
Avatar billede eagleeye Praktikant
22. maj 2003 - 21:25 #8
Hvis du har tabellen åben i Access når du opdater skal du lukke tabelle og åbne den igen for man kan se ændringen. Kunne det være derfor?
Avatar billede bgoalias2001 Nybegynder
22. maj 2003 - 21:28 #9
dette er ikke grunden... jeg har ikke haft min db åben ... men ved at der er teksten 'nu er der tekst' og hvis jeg vil have det skiftet ud med 'f'så sker der intet... heller ikke hvis jeg bare skriver mere tekst på
Avatar billede mortrr Praktikant
22. maj 2003 - 22:24 #10
Udskift din if "request("mode") ... end if" med:
===========
navn = session("Navn")
If Request("mode") = "Check" then
  strOpdater = Replace(request("note"),"'","''")
  strSQL = "Update bruger Set [Note]='" & strOpdater &"' Where Navn='" & navn & "'"
  Conn.Execute(strSQL)
end if

Sql ="SELECT * FROM bruger WHERE Navn= '" & navn & "'" 
Set rs = Conn.Execute(Sql)
strNote = rs("Note")
===========

Får du så de nye eller de samme gamle data i formularen, hvis du forsøger at opdatere?

Hvis ja - hvilken felttype er Navn? Det skal være tekst, og ikke Memo/Notat.
Avatar billede bgoalias2001 Nybegynder
22. maj 2003 - 22:35 #11
jeg får det samme..

Typen er notat, men kan man da ikke opdater andet end formatet tekst!!
Avatar billede thomas_yde Nybegynder
22. maj 2003 - 22:38 #12
Du kan evt. også skifte ' ud med `.
Avatar billede mortrr Praktikant
22. maj 2003 - 22:44 #13
Hvis Navn er notat, så skal du bruge:
strSQL = "Update bruger Set [Note]='" & strOpdater &"' Where Navn Like '" & navn & "'"

Men du bør lave det om til tekst. Notat bruges til laaange tekster (over 255 tegn).
Avatar billede bgoalias2001 Nybegynder
22. maj 2003 - 22:54 #14
jeg takker mortrr det virkede.. hvis du vil være så venlig at skrive ok og vælge svar ;-)

Men det skal lige siges at beskeder skrevet i notat fylder ikke mere af den grund... notat fylder den mængde du putter i og ikke mere, hvis du ikke har lagt en begransning på(det vil sige at den står som default). ;-)
Avatar billede mortrr Praktikant
22. maj 2003 - 23:00 #15
Jeg ved godt at de ikke fylder mere.
Faktisk fylder de en del mindre. Men der er, som du har opdaget, en hel del der ikke kan gøres med notat-typen. Derfor er det bedst kun at bruge den til større tekstmængder, som man typisk skal hente i fuld udtrækning, og ikke skal lave sammenligninger på.
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