Avatar billede kartolux Nybegynder
16. november 2001 - 09:08 Der er 38 kommentarer og
1 løsning

Opdatere database med sand/falsk

Jeg har en database med to felter - ArticleId og VisTlfFax.

Jeg skal bruge en lille asp side med to bokse i en formular:

ArticleId og VisTlfFax

Og så en opdater-knap.

Hvis jeg skriver 49 i ArticleId-boksen og checker (sætter flueben) i VisTlfFax-boksen, så sættes VisTlfFax feltet i databasen til \"True\".

Og omvendt - intet flueben - så sættes feltet til \"False\".

Databasen åbnes med:

Set rsConn = Server.CreateObject(\"ADODB.Connection\")
rsConn.Open session(\"ArticleDB\")


Avatar billede juggalo Nybegynder
16. november 2001 - 09:17 #1
if request.form(\"VisTlfFax\")=\"on\" then
SQL=\"UPDATE tabelnavn SET VisTlfFax=\"True\" WHERE ArticleId=\"&request.form(\"ArticleId\")
else
SQL=\"UPDATE tabelnavn SET VisTlfFax=\"False\" WHERE ArticleId=\"&request.form(\"ArticleId\")
end if
Avatar billede kartolux Nybegynder
16. november 2001 - 09:20 #2
Vil du ikke lave hele koden med formular og det hele?
Avatar billede juggalo Nybegynder
16. november 2001 - 09:23 #3
Jo da, hang on et par minutter
Avatar billede juggalo Nybegynder
16. november 2001 - 09:33 #4
fil: form.asp
<html>
<form name=formular action=update.asp method=post>
ArticleId: <input type=text name=ArticleId><br>
VisTlfFax: <input type=checkbox name=VisTlfFax><br>
<input type=submit value=Send>
</form>
</html>


fil: update.asp
<%
Set rsConn = Server.CreateObject(\"ADODB.Connection\")
rsConn.Open session(\"ArticleDB\")

if request.form(\"VisTlfFax\")=\"on\" then
SQL=\"UPDATE tabelnavn SET VisTlfFax=\"True\" WHERE ArticleId=\"&request.form(\"ArticleId\")
else
SQL=\"UPDATE tabelnavn SET VisTlfFax=\"False\" WHERE ArticleId=\"&request.form(\"ArticleId\")
end if

rsConn.execute(SQL)
%>
Avatar billede kartolux Nybegynder
16. november 2001 - 09:44 #5
Den kommer med denne fejl:

Expected end of statement

/vistlffax.asp, line 6

SQL=\"UPDATE Articles SET VisTlfFax=\"True\" WHERE ArticleId=\"&request.form(\"ArticleId\")
------------------------------------^

Det er en access-database - gør det noget?
Avatar billede juggalo Nybegynder
16. november 2001 - 09:48 #6
My bad - skulle have været:
SQL=\"UPDATE Articles SET VisTlfFax=\'True\' WHERE ArticleId=\"&request.form(\"ArticleId\")

altså med \' istedet for \"
Avatar billede kartolux Nybegynder
16. november 2001 - 09:53 #7
Nu kommer denne fejl:
Microsoft OLE DB Provider for ODBC Drivers error \'80040e07\'

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

/vistlffax.asp, line 11

Koden ser sådan ud nu:

<%
Set rsConn = Server.CreateObject(\"ADODB.Connection\")
rsConn.Open session(\"ArticleDB\")

if request.form(\"VisTlfFax\")=\"on\" then
SQL=\"UPDATE Articles SET VisTlfFax=\'True\' WHERE ArticleId=\"&request.form(\"ArticleId\")
else
SQL=\"UPDATE Articles SET VisTlfFax=\'False\' WHERE ArticleId=\"&request.form(\"ArticleId\")
end if

rsConn.execute(SQL)
%>
Avatar billede juggalo Nybegynder
16. november 2001 - 09:57 #8
Hvilke datatyper er dine felter i databasen sat til?
Avatar billede kartolux Nybegynder
16. november 2001 - 10:00 #9
ArticleId er et tal - VisTlfFax er et sandt/falsk felt.
Avatar billede juggalo Nybegynder
16. november 2001 - 10:04 #10
Alright, så skal true/false bare rettes til 1/0
Avatar billede excession Nybegynder
16. november 2001 - 10:14 #11
er det ikke:

SQL=\"UPDATE Articles SET VisTlfFax=TRUE WHERE ArticleId=\"&request.form(\"ArticleId\")

?
Avatar billede kartolux Nybegynder
16. november 2001 - 10:25 #12
Ligegyldigt hvad jeg gør, vil den ikke opdatere databasen. Gør jeg noget forkert?

Her er siden med formularen (VisTlfFax.htm):

<html>

<form name=formular action=vistlffax.asp method=post>

<head>
<meta name=\"GENERATOR\" content=\"Microsoft FrontPage 4.0\">
<meta name=\"ProgId\" content=\"FrontPage.Editor.Document\">
</head>

ArticleId: <input type=\"text\" name=\"ArticleId\" size=\"20\"><br>
VisTlfFax: <input type=\"checkbox\" name=\"VisTlfFax\" value=\"ON\"><br>
<input type=\"submit\" value=\"Send\">
</form>

</htm

Her er siden med sql-opdateringen (VisTlfFax.asp):

<%
Set rsConn = Server.CreateObject(\"ADODB.Connection\")
rsConn.Open session(\"ArticleDB\")

if request.form(\"Formular\")=\"on\" then
SQL=\"UPDATE Articles SET VisTlfFax=TRUE WHERE ArticleId=\"&request.form(\"ArticleId\")
else
SQL=\"UPDATE Articles SET VisTlfFax=FALSE WHERE ArticleId=\"&request.form(\"ArticleId\")
end if

rsConn.execute(SQL)
%>
Avatar billede juggalo Nybegynder
16. november 2001 - 10:30 #13
Prøv det her:

Her er siden med formularen (VisTlfFax.htm):

<html>
<head>
<meta name=\"GENERATOR\" content=\"Microsoft FrontPage 4.0\">
<meta name=\"ProgId\" content=\"FrontPage.Editor.Document\">
</head>

<body>
<form name=formular action=vistlffax.asp method=post>
ArticleId: <input type=\"text\" name=\"ArticleId\" size=\"20\"><br>
VisTlfFax: <input type=\"checkbox\" name=\"VisTlfFax\" value=\"ON\"><br>
<input type=\"submit\" value=\"Send\">
</form>

</html>

Her er siden med sql-opdateringen (VisTlfFax.asp):

<%
Set rsConn = Server.CreateObject(\"ADODB.Connection\")
rsConn.Open session(\"ArticleDB\")

if request.form(\"VisTlfFax\")=\"on\" then
SQL=\"UPDATE Articles SET VisTlfFax=TRUE WHERE ArticleId=\"&request.form(\"ArticleId\")
else
SQL=\"UPDATE Articles SET VisTlfFax=FALSE WHERE ArticleId=\"&request.form(\"ArticleId\")
end if

rsConn.execute(SQL)
%>
Avatar billede excession Nybegynder
16. november 2001 - 10:30 #14
jeg kan ikke se hvad der er galt medmindre det er noget med din session at gøre..
Avatar billede excession Nybegynder
16. november 2001 - 10:33 #15
hvor er stien til din database egentlig?
Avatar billede juggalo Nybegynder
16. november 2001 - 10:33 #16
Tjah.. han kaldte et formfelt som ikke fandtes;

Kommentar fra kartolux 
16/11 2001 10:25:47 
if request.form(\"Formular\")=\"on\" then

Skulle have været
if request.form(\"VisTlfFax\")=\"on\" then
Avatar billede juggalo Nybegynder
16. november 2001 - 10:35 #17
Jeg formoder at den ligger i en session variabel - session(\"ArticleDB\")
Avatar billede excession Nybegynder
16. november 2001 - 10:36 #18
ja jeg skulle også til at foreslå at han udskrev sin sql så man kunne se hvad der skete
Avatar billede kartolux Nybegynder
16. november 2001 - 10:39 #19
Den opdaterer altså stadigvæk ikke. Mener I, at jeg skal lave en anden forbindelse til databasen?
Avatar billede juggalo Nybegynder
16. november 2001 - 10:42 #20
Hvor kommer session(\"ArticleDB\") fra - og hvad indeholder den?
Avatar billede excession Nybegynder
16. november 2001 - 10:43 #21
får du stadig fejl eller sker der bare ikke noget noget du trykker send ?
Avatar billede kartolux Nybegynder
16. november 2001 - 10:44 #22
Session er defineret i Global.asa. Men jeg har ændret VisTlfFax.asp til:

<%
Set rsConn = Server.CreateObject(\"ADODB.Connection\")
rsConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"_private/ArticleDB.mdb\")

if request.form(\"VisTlfFax\")=\"on\" then
SQL=\"UPDATE Articles SET VisTlfFax=TRUE WHERE ArticleId=\"&request.form(\"ArticleId\")
else
SQL=\"UPDATE Articles SET VisTlfFax=FALSE WHERE ArticleId=\"&request.form(\"ArticleId\")
end if

rsConn.execute(SQL)
%>


og det ændrer ikke noget.
Avatar billede kartolux Nybegynder
16. november 2001 - 10:45 #23
excession --> Den submitter fint og uden fejl - databasen opdateres bare ikke. Kan det være noget med at VisTlfFax.asp skal sættes til nostore og nocache?
Avatar billede kartolux Nybegynder
16. november 2001 - 10:46 #24
Jeg har en mistanke om, at formens felt ArticleId skal ændres til at være numerisk, da ArticleId er selve nummereringen i databasen.
Avatar billede juggalo Nybegynder
16. november 2001 - 10:47 #25
prøv lige at skriv som jeg sagde kl. 10:04:33 

f request.form(\"VisTlfFax\")=\"on\" then
SQL=\"UPDATE Articles SET VisTlfFax=\'1\' WHERE ArticleId=\"&request.form(\"ArticleId\")
else
SQL=\"UPDATE Articles SET VisTlfFax=\'0\' WHERE ArticleId=\"&request.form(\"ArticleId\")
end if

Altså 1 og 0 i stedet for TRUE og FALSE
Avatar billede excession Nybegynder
16. november 2001 - 10:48 #26
kan du ikke prøve at udskrive dine resultater af dine requests samt sql\'en.. så kan du i det mindste se om de virker
Avatar billede excession Nybegynder
16. november 2001 - 10:49 #27
eller kan du prøve med:

if request.form(\"formular\") <> \"\" then
SQL=\"UPDATE Articles SET VisTlfFax=TRUE WHERE ArticleId=\"&request.form(\"ArticleId\")
else
SQL=\"UPDATE Articles SET VisTlfFax=FALSE WHERE ArticleId=\"&request.form(\"ArticleId\")
end if
Avatar billede excession Nybegynder
16. november 2001 - 10:52 #28
id = request.form(\"ArticleId\")

if request.form(\"formular\") <> \"\" then
SQL=\"UPDATE Articles SET VisTlfFax=TRUE WHERE ArticleId=\" & id
else
SQL=\"UPDATE Articles SET VisTlfFax=FALSE WHERE ArticleId=\" & id
end if

nu skyder jeg helt vildt.. ;)
Avatar billede kartolux Nybegynder
16. november 2001 - 10:55 #29
Der er ikke noget af det der virker  :0(
Avatar billede juggalo Nybegynder
16. november 2001 - 10:58 #30
Prøv at udskrive;
request.form(\"ArticleId\")
request.form(\"VisTlfFax\")
og variablen SQL

og se om de har de korrekte værdier
Avatar billede kartolux Nybegynder
16. november 2001 - 11:03 #31
Udskrift ved articletype 9 og flueben:

9
ON
UPDATE Articles SET VisTlfFax=FALSE WHERE ArticleId=9

ved articletype 9 og IKKE flueben:

9

UPDATE Articles SET VisTlfFax=FALSE WHERE ArticleId=9
Avatar billede juggalo Nybegynder
16. november 2001 - 11:07 #32
kan du ikke lige paste den if request.form osv. som du bruger
Avatar billede kartolux Nybegynder
16. november 2001 - 11:09 #33
Jo, den ser sådan her ud:

<%
Set rsConn = Server.CreateObject(\"ADODB.Connection\")
rsConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"_private/ArticleDB.mdb\")

id = request.form(\"ArticleId\")

if request.form(\"VisTlfFax\")=\"on\" then
SQL=\"UPDATE Articles SET VisTlfFax=\'1\' WHERE ArticleId=\"&request.form(\"ArticleId\")
else
SQL=\"UPDATE Articles SET VisTlfFax=\'0\' WHERE ArticleId=\"&request.form(\"ArticleId\")

end if

rsConn.execute(SQL)

response.write id & \"<br>\"
vistlffax = request.form(\"VisTlfFax\")
response.write vistlffax & \"<br>\"

response.write sql

%>
Avatar billede juggalo Nybegynder
16. november 2001 - 11:14 #34
og resultatet af ovenstående?
Avatar billede kartolux Nybegynder
16. november 2001 - 11:17 #35
Det er den udskrift, der står lige oven over. Det ser ud til, at ligeyldigt, hvad fluebenet sættes til, så vil den sætte værdien FALSE i VisTlfFax.
Avatar billede juggalo Nybegynder
16. november 2001 - 11:19 #36
Hvordan bliver \"UPDATE Articles SET VisTlfFax=\'1\'\" til \"UPDATE Articles SET VisTlfFax=FALSE\"?
Avatar billede kartolux Nybegynder
16. november 2001 - 11:21 #37
Jeg har fundet fejlen!!!

Den der if med \"on\" skal ændres til \"ON\" - store bogstaver...
Avatar billede juggalo Nybegynder
16. november 2001 - 11:24 #38
YES! Godt så! Kanon! :)
Avatar billede kartolux Nybegynder
16. november 2001 - 11:26 #39
Det er nogen gange F****** træls, så lidt der skal til  :0)

Fedt nok, at vi blev færdige!

Tak for hjælpen  :0)
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