Avatar billede martin181 Nybegynder
08. februar 2007 - 15:19 Der er 17 kommentarer og
1 løsning

Lille fejl ifb. update i database vha. asp

Hejsa,

jeg sidder og roder lidt med at få opdateret nogle værdier i min database via. asp sider - men jeg er stødt på et problem...

jeg kan ikke få flg. to sider til helt at arbejde sammen:

- første side hvor jeg indtaster mine nye værdier

redigerkampe.asp:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
    <TITLE>Rediger Kampe</TITLE>
<meta name="Generator" content="Stone's WebWriter 4">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#660066" ALINK="#FF0000">
<H2>Rediger kampe</H2>
<%
DIM CONNECT
SET CONNECT = SERVER.CREATEOBJECT("ADODB.CONNECTION")
CONNECT.OPEN "DRIVER={Microsoft ACCESS DRIVER (*.MDB)}; DBQ=" & Server.MapPath ("../../database/kampe.mdb")
%>
<%
SET ONKampe = CONNECT.EXECUTE ("Select * FROM kampe")
%>
<BR>
<BR>
Data for seneste kamp er:<br>
<FORM ACTION="godkendkampe.asp?nr=<%=request.querystring("nr")%>" Target="_top" METHOD="POST" NAME="kampchange">
<TABLE>
<TR>
<TD>Dato:</TD>
<TD><input type="text" value="<%=ONKampe("SenesteDato")%>" name="SenesteDato"></TD>
</TR>
<TR>
<TD>Kamp:</TD>
<TD><input type="text" size="30" maxlength="30" value="<%=ONKampe("SenesteKamp")%>" name="SenesteKamp"></TD>
</TR>
<TR>
<TD>Resultat:</TD>
<TD><input type="text" value="<%=ONKampe("SenesteResultat")%>" name="SenesteResultat"></TD>
</TR>
</TABLE>
<br><br>
<TABLE>
Data for næste kamp er:<br>
<TABLE>
<TR>
<TD>Dato:</TD>
<TD><input type="text" value="<%=ONKampe("NaesteDato")%>" name="NaesteDato"></TD>
</TR>
<TR>
<TD>Kamp:</TD>
<TD><input type="text" size="30" maxlength="30" value="<%=ONKampe("NaesteKamp")%>" name="NaesteKamp"></TD>
</TR>
<TR>
<TD>Kl:</TD>
<TD><input type="text" value="<%=ONKampe("NaesteKl")%>" name="NaesteKl"></TD>
</TR>
</TABLE>
<INPUT TYPE="hidden" VALUE="<%=ONKampe("ID")%>" NAME="Nr">
<strong>Bemærk - der må ikke indgå ' og " i felterne</strong>
<br>
<input type="submit" value="Gem ændringer" name="Send"><input type="reset" value="Fortryd indtastningerne" name="Reset">
</FORM>

<!-- lukker forbindelsen -->
<%
ONKampe.close
connect.close
set ONKampe=nothing
set connect=nothing
%>
</BODY>
</HTML>

og den hvor jeg ønsker at opdatere min database med værdierne fra siden:

<%
RESPONSE.BUFFER="True"

CONST ADOPENKEYSET = 1
CONST ADLOCKOPTIMISTIC = 3

SET CONN = SERVER.CREATEOBJECT("ADODB.CONNECTION")
CONN.OPEN "DRIVER={Microsoft ACCESS DRIVER (*.MDB)}; DBQ=" & _
          Server.MapPath("../../database/kampe.mdb")
STRSQL = "Select * FROM kampe where ID = " & clng(request.querystring("nr")) & ";"

strSql = "UPDATE DISTINCTROW [nyhed] SET [Dato] = '" & request.form("dato") & _
        "',[SenesteKamp] = '" & request.form("SenesteKamp") & _
        "',[NaesteDato] = '" & request.form("NaesteDato") & _
        "',[NaesteKamp] = '" & request.form("NaesteKamp") & _
        "' WHERE [id] = " & clng(request.querystring("nr"))
        "' WHERE [id] = " & clng(request.querystring("nr"))

' gem ændringer
conn.execute (strSql)

'nyt
conn.close
set conn=nothing

' tilbage til admin
RESPONSE.REDIRECT("nyheds-admin.asp")
%>

min dabatase hedder kampe og det samme gør min tabel - den har flg. indhold:
ID - Autonumber
SenesteDato - text
SenesteKamp - text
SenesteResultat - text
NaesteDato - text
NaesteKamp - text
NaesteKl - text

når jeg forsøger at opdatere får jeg flg. fejlmelding:

Microsoft VBScript compilation error '800a0400'

Expected statement

/admin/godkendkampe.asp, line 17

"' WHERE [id] = " & clng(request.querystring("nr"))
^

så er der nogen, der kan gennemskue hvad jeg gør galt?
Avatar billede kalp Novice
08. februar 2007 - 15:35 #1
strSql = "UPDATE DISTINCTROW [nyhed] SET [Dato] = '" & request.form("dato") & _
        "',[SenesteKamp] = '" & request.form("SenesteKamp") & _
        "',[NaesteDato] = '" & request.form("NaesteDato") & _
        "',[NaesteKamp] = '" & request.form("NaesteKamp") & _
        "' WHERE [id] = " & clng(request.querystring("nr"))
Avatar billede martin181 Nybegynder
08. februar 2007 - 15:49 #2
har lige ændret til:
strSql = "UPDATE DISTINCTROW [Kampe] SET [Dato] = '" & request.form("dato") & _
        "',[SenesteKamp] = '" & request.form("SenesteKamp") & _
        "',[NaesteDato] = '" & request.form("NaesteDato") & _
        "',[NaesteKamp] = '" & request.form("NaesteKamp") & _
        "' WHERE [id] = " & clng(request.querystring("nr"))
        "' WHERE [id] = " & clng(request.querystring("nr"))

tror jeg i første omgang blev træt af at det ikke virkede og prøvede med lidt copy/paste fra noget, der virker...

men det giver mig stadig samme fejl...
Avatar billede kalp Novice
08. februar 2007 - 15:50 #3
øhm.. hvorfor har du 2 where ?? kan man jo ikke
Avatar billede martin181 Nybegynder
08. februar 2007 - 16:10 #4
det er en fejl...

ændrede det lige...

nu får jeg flg. istedet:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'clng'

/admin/godkendkampe.asp, line 10
Avatar billede kalp Novice
08. februar 2007 - 16:12 #5
strSql = "UPDATE DISTINCTROW [Kampe] SET [Dato] = '" & request.form("dato") & _
        "',[SenesteKamp] = '" & request.form("SenesteKamp") & _
        "',[NaesteDato] = '" & request.form("NaesteDato") & _
        "',[NaesteKamp] = '" & request.form("NaesteKamp") & _
        "' WHERE [id] = " & request.querystring("nr")
Avatar billede martin181 Nybegynder
08. februar 2007 - 16:17 #6
samme fejl...
Avatar billede kalp Novice
08. februar 2007 - 16:18 #7
det kan ikke være samme fejl når der ikke er noget som hedder clng mere.
Avatar billede kalp Novice
08. februar 2007 - 16:21 #8
strSql = "UPDATE DISTINCTROW [Kampe] SET [Dato] = '" & request.form("dato") & "',[SenesteKamp] = '" & request.form("SenesteKamp") & "',[NaesteDato] = '" & request.form("NaesteDato") & "',[NaesteKamp] = '" & request.form("NaesteKamp") & "' WHERE [id] = " & request.querystring("nr") & "

sådan der..

og hvad der ellers kan være af fejl kan vi jo ikke bare lige sådan regne ud for dig.
aner ikke hvilken db det er.. og hvilke datatyper.

f.eks er det access db så skal du # # rundt om dato'erne..
Avatar billede martin181 Nybegynder
08. februar 2007 - 16:24 #9
Min fil ser nu således ud:

<%
RESPONSE.BUFFER="True"

CONST ADOPENKEYSET = 1
CONST ADLOCKOPTIMISTIC = 3

SET CONN = SERVER.CREATEOBJECT("ADODB.CONNECTION")
CONN.OPEN "DRIVER={Microsoft ACCESS DRIVER (*.MDB)}; DBQ=" & _
          Server.MapPath("../../database/kampe.mdb")
STRSQL = "Select * FROM kampe where ID = " & clng(request.querystring("nr")) & ";"

strSql = "UPDATE DISTINCTROW [Kampe] SET [Dato] = '" & request.form("dato") & _
        "',[SenesteKamp] = '" & request.form("SenesteKamp") & _
        "',[NaesteDato] = '" & request.form("NaesteDato") & _
        "',[NaesteKamp] = '" & request.form("NaesteKamp") & _
        "' WHERE [id] = " & request.querystring("nr")

' gem ændringer
conn.execute (strSql)

'nyt
conn.close
set conn=nothing

' tilbage til admin
RESPONSE.REDIRECT("nyheds-admin.asp")
%>

jeg har jo flg. linie lidt højere oppe end selve sql'en:

clng(request.querystring("nr"))

tror det er den den brokker sig over...

og helt fair at I ikke lige kan regne ud fra mig hvad det er...

det er en acces db - og mine datofelter er bare tekst felter...
Avatar billede kalp Novice
08. februar 2007 - 21:30 #10
prøv at udskrive din SQL..

' gem ændringer
response.write(strSql)
response.end
conn.execute (strSql)

og sig skriv herinde hvad den udskriver.
Avatar billede martin181 Nybegynder
09. februar 2007 - 09:20 #11
hej igen,

efter at have indsat det fra din seneste kommentar får jeg flg.:

UPDATE DISTINCTROW [Kampe] SET [Dato] = '',[SenesteKamp] = '1',[NaesteDato] = '1',[NaesteKamp] = '1' WHERE [id] =

så den fanger ikke min "nr" fra forrige side...

på den har jeg da ellers flg. linie:
<INPUT TYPE="hidden" VALUE="<%=ONKampe("ID")%>" NAME="Nr">

som står inden min </Form> - så den burde da komme med over...

for en god ordens skyld, så er min database opbygget som følger:

Database navn:
Kampe

Tabelnavn:
Kampe

Feltnanve:
ID - Autonumber
SenesteDato - text
SenesteKamp - text
SenesteResultat - text
NaesteDato - text
NaesteKamp - text
NaesteKl - text
Avatar billede kalp Novice
09. februar 2007 - 09:36 #12
prøv

strSql = "UPDATE DISTINCTROW [Kampe] SET [Dato] = '" & request.form("dato") & _
        "',[SenesteKamp] = '" & request.form("SenesteKamp") & _
        "',[NaesteDato] = '" & request.form("NaesteDato") & _
        "',[NaesteKamp] = '" & request.form("NaesteKamp") & _
        "' WHERE [id] = " & request.form("Nr")
Avatar billede kalp Novice
09. februar 2007 - 09:36 #13
og ret også denne

<INPUT TYPE="hidden" VALUE="<%=ONKampe("ID")%>" NAME="Nr">

til

<INPUT TYPE="hidden" VALUE="<%=ONKampe("ID")%>" NAME="Nr" Id="Nr">
Avatar billede martin181 Nybegynder
09. februar 2007 - 10:10 #14
jeg rettede til og fjernede først den hvor den skriver sql-sætningen ud - men det gav mig en fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/admin/godkendkampe.asp, line 20


så satte jeg den på igen - det giver mig:
UPDATE DISTINCTROW [Kampe] SET [Dato] = '',[SenesteKamp] = '1',[NaesteDato] = '1',[NaesteKamp] = '1' WHERE [id] = 1
Avatar billede martin181 Nybegynder
09. februar 2007 - 10:11 #15
opdagede lige fejlen...

mit felt hedder senesteDato og ikke dato - det rettede jeg til - og nu virker det

tak for kampen - vil du ikke have dine point?
Avatar billede kalp Novice
09. februar 2007 - 10:13 #16
det eneste jeg kan se er mystisk... det er det der distinctrow.. prøv at fjerne det.

strSql = "UPDATE [Kampe] SET [Dato] = '" & request.form("dato") & _
        "',[SenesteKamp] = '" & request.form("SenesteKamp") & _
        "',[NaesteDato] = '" & request.form("NaesteDato") & _
        "',[NaesteKamp] = '" & request.form("NaesteKamp") & _
        "' WHERE [id] = " & request.querystring("nr")

en af dine dato'er er tomme, men hvis den i db'en tillader dette er det ikke noget problem..
Avatar billede kalp Novice
09. februar 2007 - 10:15 #17
he he okay:)
Avatar billede martin181 Nybegynder
09. februar 2007 - 12:32 #18
God weekend :-)
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