Avatar billede webster Nybegynder
02. februar 2000 - 20:40 Der er 22 kommentarer og
1 løsning

SQL Fejl

Hej

Jeg er i gang med at lave et spørgeskema i forbindelse med en undersøgelse.
Det er ideen at svarene fra spørgeskemaet skal gemmes i en database. Men når jeg kører scriptet får jeg en fejlmeddelelse.
For ikke at lægge for stort et indlæg ind, har jeg lagt en .txt fil med sciptet på:
www.wafer-card.dk/logbog/skema/fejl.txt
Tak for hjælpen

Carsten
Avatar billede Slettet bruger
02. februar 2000 - 21:39 #1
Avatar billede webster Nybegynder
02. februar 2000 - 22:07 #2
Nå. Den viser jo ikke sciptet, men kører den, så jeg kommer alligevel til at ligge sciptet ind her:

Scriptet med form koden, som sender svarerne til den anden asp fil:

<font face="Arial" size="2"><i><p><br>
<table border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#84A068">
    <tr><td width="22"><img src="/data/billeder/vtop.jpg" width="22" height="21" border="0"></td><td width="*">&nbsp;</td><td width="22"><img src="/data/billeder/htop.jpg" width="22" height="21" border="0"></td></tr>
    <tr><td>&nbsp;</td><td>
<center><font size="+2">Undersøgelse om computerens betydning for befolkningen.</font></center><br>
&nbsp;Svar venligst på nedenstående spørgsmål:
    <form action="Modtag.asp" method="POST">
<hr size="2" width="100%" color="000000">
Alder:<br>
    <input type="radio" name="Alder" value="Under 13">Under 13 år<br>
    <input type="radio" checked name="Alder" value="13-18">13 - 18 år<br>
    <input type="radio" name="Alder" value="18-60">18 - 60 år<br>
    <input type="radio" name="Alder" value="Over 60">Over 60 år<br>
<hr size="2" width="100%" color="000000">
Køn:<br>
    <input type="radio" checked name="Kon" value="Mand">Mand/Dreng<br>
    <input type="radio" name="Kon" value="Kvinde">Kvinde/Pige<br>
<hr size="2" width="100%" color="000000">
Hvor lang tid bruge De en computer dagligt?<br>
    <input type="radio" checked name="Tid" value="Under 1">Under 1 time<br>
    <input type="radio" name="Tid" value="1-2">1-2 timer<br>
    <input type="radio" name="Tid" value="3-5">3-5 timer<br>
    <input type="radio" name="Tid" value="Over 5">Over 5 timer<br>
<hr size="2" width="100%" color="000000">
Hvad bruger de computeren til? (Sæt gerne flere krydser)<br>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td width="33%"><input type="checkbox" name="Spil">&nbsp;Spil</td><td width="33%"><input type="checkbox" name="Chat">&nbsp;Chat</td><td width="33%"><input type="checkbox" name="Internet">&nbsp;Internet</td><td width="33%"><input type="checkbox" name="Homebank">&nbsp;Homebanking</tr><br>
<tr><td><input type="checkbox" name="TekstB">&nbsp;Tekstbehandling</td><td><input type="checkbox" name="Regneark">&nbsp;Regneark</td><td><input type="checkbox" name="Database">&nbsp;Database</td><td><input type="checkbox" name="DTP">&nbsp;DTP</td></tr>
<tr><td><input type="checkbox" name="Regnskab">&nbsp;Regnskab</td><td><input type="checkbox" name="Programmering">&nbsp;Programmering</td><td>&nbsp;</td><td>&nbsp;</td></tr>
</table>
<hr size="2" width="100%" color="000000">
Har computeren gjort hverdagen lettere for Dem?
<blockquote>Hjemme:<br>
    <input type="radio" checked name="Betydninghjemme" value="Ja">Ja    <input type="radio" name="Betydninghjemme" value="Nej">Nej<br>
        Arbejde:<br>
    <input type="radio" checked name="Betydningarbejde" value="Ja">Ja    <input type="radio" name="Betydningarbejde" value="Nej">Nej<br>
</blockquote>
<hr size="2" width="100%" color="000000">
<input type="submit" name="Action" value="Indsend spørgeskema">
    <tr><td width="22"><img src="/data/billeder/vbund.jpg" width="22" height="21" border="0"></td><td width="*">&nbsp;</td><td width="22"><img src="/data/billeder/hbund.jpg" width="22" height="21" border="0"></td></tr>
</table>
<br>
</i></font>



Scriptet der modtager svarene, og som skal tilføje dem til databasen. Fejlen opstår på execute linien.


<%
Svar1 = request.form("Alder")
Svar2 = request.form("Kon")
Svar3 = request.form("Tid")
Svar4 = request.form("Betydninghjemme")
Svar5 = request.form("Betydningarbejde")
if lcase(request.form("Spil")) = "on" then Svar6 = "On" else Svar6 = "Off"
if lcase(request.form("Chat")) = "on" then Svar7 = "On" else Svar7 = "Off"
if lcase(request.form("Internet")) = "on" then Svar8 = "On" else Svar8 = "Off"
if lcase(request.form("Homebank")) = "on" then Svar9 = "On" else Svar9 = "Off"
if lcase(request.form("TekstB")) = "on" then Svar10 = "On" else Svar10 = "Off"
if lcase(request.form("Regneark")) = "on" then Svar11 = "On" else Svar11 = "Off"
if lcase(request.form("Database")) = "on" then Svar12 = "On" else Svar12 = "Off"
if lcase(request.form("DTP")) = "on" then Svar13 = "On" else Svar13 = "Off"
if lcase(request.form("Regnskab")) = "on" then Svar14 = "On" else Svar14 = "Off"
if lcase(request.form("Programmering")) = "on" then Svar15 = "On" else Svar15 = "Off"

Forbindelse = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/Logbog/data/skema.mdb")
Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.Open Forbindelse
SQL = "INSERT INTO Svar ( Alder, Kon, Tid, Betydninghjemme, Betydningarbejde, Spil, Chat, Internet, Homebank, TekstB, Regneark, Database, DTP, Regnskab,Programmering) values ( Svar1, Svar2, Svar3, Svar4, Svar5, Svar6, Svar7, Svar8, Svar9, Svar10, Svar11, Svar12, Svar13, Svar14, Svar15)"
MyConn.execute (SQL)
MyConn.Close
Set MyConn = Nothing
%>
Avatar billede tue Nybegynder
02. februar 2000 - 23:00 #3
Hvilken fejl meddelelse for du ???
Avatar billede winkill Nybegynder
02. februar 2000 - 23:37 #4
Prøv med denne linie...

SQL = "INSERT INTO Svar ( Alder, Kon, Tid, Betydninghjemme, Betydningarbejde, Spil, Chat, Internet, Homebank, TekstB, Regneark, Database, DTP, Regnskab,Programmering) values ( 'Svar1', 'Svar2', 'Svar3', 'Svar4', 'Svar5', 'Svar6', 'Svar7', 'Svar8', 'Svar9', 'Svar10', 'Svar11', 'Svar12', 'Svar13', 'Svar14', 'Svar15')"

/WinKill
Avatar billede winkill Nybegynder
02. februar 2000 - 23:39 #5
Skal stå lige før MyConn.execute (SQL) i stedet for den nuværende linie...
Avatar billede winkill Nybegynder
02. februar 2000 - 23:40 #6
Hjælper det ikke så ville du gøre det lettere fro os hvis du poster fejlen her, så vi kan se hvad det er serveren ikke vil æde... ;)
Avatar billede tue Nybegynder
02. februar 2000 - 23:47 #7
If not (rs.BOF Or rs.EOF) Then

rs.AddNew
rs("Alder") = request("svar1") & " "
rs("Kon") = request("svar2") & " "
rs("Tid") = request("svar3") & " "
rs.Update

Du skal selvfølgelig indsætte alle
de der skal indskrives i databasen !!!
Avatar billede winkill Nybegynder
02. februar 2000 - 23:50 #8
Tue > Hvorfor bruge 15 linier på det samme som kan gøres på 1 linie ?o)

Er blot nysgerig...
Avatar billede tue Nybegynder
02. februar 2000 - 23:51 #9
Det er lidt nemmere at overskue !!!
Avatar billede winkill Nybegynder
02. februar 2000 - 23:54 #10
Det kunne være et ret godt argument, men optimalt ville jeg nu ikke kalde det ;o)

Anyway, hvis det løser problemet...!?!
Avatar billede tue Nybegynder
02. februar 2000 - 23:59 #11
Det virker når jeg bruger det, så det
skulle det gerne !!!
Avatar billede jannick Nybegynder
03. februar 2000 - 10:00 #12
Hvis man går ind på det link han gav, får man fejlen:

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

[Microsoft][ODBC Microsoft Access 97 Driver] Syntax error in INSERT INTO statement.

/logbog/skema/Modtag.asp, line 24
Avatar billede jannick Nybegynder
03. februar 2000 - 10:00 #13
Der er i øvrigt en fejl i tabellen på din side LOL :-)
Avatar billede webster Nybegynder
05. februar 2000 - 12:57 #14
Wilkill > der kommer også en fejlmeddelelse når jeg bruger dit forslag. Prøver med tue's selvom du har ret i at det er lidt besværligt.
Avatar billede webster Nybegynder
05. februar 2000 - 13:22 #15
Jeg har nu prøvet tues forslag.

Her er den kode jeg har sat ind i stedet for insert SQL sætninger:

Forbindelse = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/Logbog/data/skema.mdb")
Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.Open Forbindelse
StrSql = "SELECT * FROM Svar"
Set rs = MyConn.Execute(StrSql)
rs.AddNew
rs("Alder") = request("svar1") & " "
rs("Kon") = request("svar2") & " "
rs("Tid") = request("svar3") & " "
rs("betydninghjemme") = request("svar4") & " "
rs("betydningarbejde") = request("svar5") & " "
rs("Spil") = request("svar6") & " "
rs("Chat") = request("svar7") & " "
rs("Internet") = request("svar8") & " "
rs("Homebank") = request("svar9") & " "
rs("TekstB") = request("svar10") & " "
rs("Regneark") = request("svar11") & " "
rs("Database") = request("svar12") & " "
rs("DTP") = request("svar13") & " "
rs("Regnskab") = request("svar14") & " "
rs("Programmering") = request("svar15") & " "
rs.Update

MyConn.Close
Set MyConn = Nothing

Når jeg kører det får jeg fejlmeddelelsen:
ADODB.Recordset fejl '800a0cb3'

Den handling, programmet anmodede om, understøttes ikke af provideren.

/logbog/skema/Modtag.asp, linje 25

Linie 25 er rs.addnew
Avatar billede webster Nybegynder
05. februar 2000 - 14:45 #16
Jeg er lidt på skideren. Jeg SKAL have siden med spørgeskemaet op at køre i dag hvis jeg skal nå at kunne bruge det i min projektopgave. Jeg har hævet pointene til 450 og der er yderligere point hvis jeg får svar i løbet af 2-3 timer. Det jeg vil have er en kode der indsætter svarene fra skemaet i databasen. I koden øverst på siden kan i se feltnavnene i databasen, og hvor svarene skal hentes fra.

På forhånd tak

Carsten
Avatar billede hmau Nybegynder
05. februar 2000 - 16:51 #17
prøv flg i modtag.asp


svar1 = request("Alder")
svar2 = request("Kon")
svar3 = request("Tid")
svar4 = request("Betydninghjemme")
svar5 = request("Betydningarbejde")
if request("Spil") <> "on" then
    svar6="off"
else
    svar6="on"
end if
if request("Chat") <> "on" then
    svar7="off"
else
    svar7="on"
end if
if request("Internet") <> "on" then
    svar8="off"
else
    svar8="on"
end if
if request("Homebank") <> "on" then
    svar9="off"
else
    svar9="on"
end if
if request("TekstB") <> "on" then
    svar10="off"
else
    svar10="on"
end if
if request("Regneark") <> "on" then
    svar11="off"
else
    svar11="on"
end if
if request("Database") <> "on" then
    svar12="off"
else
    svar12="on"
end if
if request("DTP") <> "on" then
    svar13="off"
else
    svar13="on"
end if
if request("Regnskab") <> "on" then
    svar14="off"
else
    svar14="on"
end if
if request("Programmering") <> "on" then
    svar15="off"
else
    svar15="on"
end if

set DB = Server.CreateObject("ADODB.Connection")
DB.open "Driver={Microsoft Access Driver (*.mdb)};"&_
"DBQ="&server.mappath("./skema.mdb")&";"&_
"DefaultDir="&server.mappath("./")&";FIL=MS Access;"

SQL = "SELECT * FROM Svar"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open SQL, DB, 3, 3
rs.AddNew
rs("Alder") = request("svar1") & " "
rs("Kon") = request("svar2") & " "
rs("Tid") = request("svar3") & " "
rs("betydninghjemme") = request("svar4") & " "
rs("betydningarbejde") = request("svar5") & " "
rs("Spil") = request("svar6") & " "
rs("Chat") = request("svar7") & " "
rs("Internet") = request("svar8") & " "
rs("Homebank") = request("svar9") & " "
rs("TekstB") = request("svar10") & " "
rs("Regneark") = request("svar11") & " "
rs("Database") = request("svar12") & " "
rs("DTP") = request("svar13") & " "
rs("Regnskab") = request("svar14") & " "
rs("Programmering") = request("svar15") & " "
rs.Update
Avatar billede webster Nybegynder
05. februar 2000 - 17:20 #18
Okay. Der var godt nok en masse fejl i koden, men jeg fik den da til at virke. Så kun 300 point til hmau. Jeg har lagt koden der virker op hvis der er andre der kan bruge det.

<%
svar1 = Request.Form("Alder")
svar2 = Request.Form("Kon")
svar3 = Request.Form("Tid")
svar4 = Request.Form("Betydninghjemme")
svar5 = Request.Form("Betydningarbejde")
if Request.Form("Spil") <> "on" then
    svar6="off"
else
    svar6="on"
end if
if Request.Form("Chat") <> "on" then
    svar7="off"
else
    svar7="on"
end if
if Request.Form("Internet") <> "on" then
    svar8="off"
else
    svar8="on"
end if
if Request.Form("Homebank") <> "on" then
    svar9="off"
else
    svar9="on"
end if
if Request.Form("TekstB") <> "on" then
    svar10="off"
else
    svar10="on"
end if
if Request.Form("Regneark") <> "on" then
    svar11="off"
else
    svar11="on"
end if
if Request.Form("Database") <> "on" then
    svar12="off"
else
    svar12="on"
end if
if Request.Form("DTP") <> "on" then
    svar13="off"
else
    svar13="on"
end if
if Request.Form("Regnskab") <> "on" then
    svar14="off"
else
    svar14="on"
end if
if Request.Form("Programmering") <> "on" then
    svar15="off"
else
    svar15="on"
end if
set DB = Server.CreateObject("ADODB.Connection")
DB.open "Driver={Microsoft Access Driver (*.mdb)};"& "DBQ="&server.mappath("/Logbog/data/skema.mdb")&";"& "DefaultDir="&server.mappath("./")&";FIL=MS Access;"
SQL = "SELECT * FROM Svar"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open SQL, DB, 3, 3
rs.AddNew
rs("Alder") = svar1 & " "
rs("Kon") = svar2 & " "
rs("Tid") = svar3 & " "
rs("betydninghjemme") = svar4 & " "
rs("betydningarbejde") = svar5 & " "
rs("Spil") = svar6 & " "
rs("Chat") = svar7 & " "
rs("Internet") = svar8 & " "
rs("Homebank") = svar9 & " "
rs("TekstB") = svar10 & " "
rs("Regneark") = svar11 & " "
rs("Database") = svar12 & " "
rs("DTP") = svar13 & " "
rs("Regnskab") = svar14 & " "
rs("Programmering") = svar15 & " "
rs.Update
DB.Close
set db = nothing
Avatar billede webster Nybegynder
05. februar 2000 - 17:21 #19
Så skidt da. 450 point.
Avatar billede hmau Nybegynder
05. februar 2000 - 17:33 #20
det er rigtigt, din database lå et andet sted, men det virkede fint for mig med request("Alder") osv. i stedet for request.form("Alder")
Avatar billede webster Nybegynder
05. februar 2000 - 17:35 #21
Med i SQL indsæt kommandoerne skal der ikke stå request(variabelnavn) med bare variabelnavn.
Avatar billede hmau Nybegynder
05. februar 2000 - 18:19 #22
i know, ikke sådan når man skal copy-paste

;)
Avatar billede webster Nybegynder
05. februar 2000 - 19:51 #23
Rigtigt. Tak for hjælpen anyway. Jeg ville ikke havde nået et uden.
  Hvis nogen her skulle have lyst må I da gerne udfylde mit spørgeskema på www.wafer-card.dk/logbog/skema

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