Avatar billede miwu.tk Nybegynder
20. juni 2006 - 14:02 Der er 6 kommentarer og
1 løsning

Update af db

Jeg kan ikke lige se hvad fejlen i min kode er. Serveren melder at der er tale om flg:

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

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

/forum/update.asp, line 39

Her er et uddrag af min update.asp

    Set Conn = Server.CreateObject("ADODB.Connection")
    DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
    DSN = DSN & "DBQ=" & Server.MapPath("forum.mdb")
    Conn.Open DSN



    strSQL = "Update [Entries] set "
    strSQL = strSQL & "[ForumID]= '" & Request.Form("ForumID") & "', "
    strSQL = strSQL & "[MessageID]= '" & Request.Form("MessageID") & "', "
    strSQL = strSQL & "[Name]= '" & Replace(Request.Form("Name"), "'", "''") & "', "
    strSQL = strSQL & "[Subject]= '" & Replace(Request.Form("Subject"), "'", "''") & "', "
    strSQL = strSQL & "[Comment]= '" & Replace(Request.Form("Comment"), "'", "''") & "', "
    strSQL = strSQL & "[Date]= '" & Now & "', "
        strSQL = strSQL & "[ip]= '" & (IP) & "'"
    strSQL = strSQL & " Where [id] = " & Request.querystring("id")

'Serveren siger at fejlen ligger i nedenstående linje
    conn.execute(strSQL)

    Conn.Close
    Set Conn = Nothing

Er der nogle der kan hjælpe? Jeg er fuldstændig blind for hvad der mon kan være galt.
Avatar billede gadebarnet Nybegynder
20. juni 2006 - 14:11 #1
fejlen er omkring at et eller flere felter ikke findes... Prøv at undersøg om alle felter findes i databasen
Avatar billede sneakraid Nybegynder
20. juni 2006 - 14:45 #2
gadebarnet > Det er ikke fordi der er manglende felter i db. Fejlen siger lidt sig selv. Der er for få parametre i sql strengen.

miwu.tk > Du kan f.eks. ændre din kode lidt, så du kan debugge koden (finde eventuelle mangler i sql strengen):

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("forum.mdb")
Conn.Open DSN

strSQL = "Update [Entries] set "
strSQL = strSQL & "[ForumID]= '" & Request.Form("ForumID") & "', "
strSQL = strSQL & "[MessageID]= '" & Request.Form("MessageID") & "', "
strSQL = strSQL & "[Name]= '" & Replace(Request.Form("Name"), "'", "''") & "', "
strSQL = strSQL & "[Subject]= '" & Replace(Request.Form("Subject"), "'", "''") & "', "
strSQL = strSQL & "[Comment]= '" & Replace(Request.Form("Comment"), "'", "''") & "', "
strSQL = strSQL & "[Date]= '" & Now & "', "
strSQL = strSQL & "[ip]= '" & (IP) & "'"
strSQL = strSQL & " Where [id] = " & Request.querystring("id")

'conn.execute(strSQL)
Response.Write(strSQL)

Conn.Close
Set Conn = Nothing

Så udskriver den din sql streng, i stedet for at afvikle den, og du kan nu se om der skulle være mangler i den.
En anden mulighed er også at datatypen på din felter i databasen er "forkerte". F.eks. går jeg ud fra at [ForumID]-feltet er af datatypen Tal / Integer, og hvis det er sandt skal du ikke skrive ' (<apostrof) omkring Request.Form("ForumID").

Et lille eks.

Hvis felt-datatypen er tal:
strSQL = strSQL & "[ForumID]= " & Request.Form("ForumID") & ", "

Hvis felt-datatypen er tekst eller notat
strSQL = strSQL & "[ForumID]= '" & Request.Form("ForumID") & "', "

Håber du forstår, ellers kan du lige prøve at skrive hvilke felter du har i db og hvilke datatyper de har :)
Avatar billede miwu.tk Nybegynder
20. juni 2006 - 15:49 #3
Jo, jeg forstod godt hvad du mente, og det hjalp en del. Nu får jeg ihvertfald ingen fejlmeldinger, men sjovt nok bliver min database ikke opdateret tiltrods for at log'en siger flg:

Update [Entries] set [name]= 'Test', [subject]= 'test', [comment]= '321bang', [date]= '20-06-2006 15:43:26', [ip]= 'xx.xxx.xxx.xxx' Where [id] = 555

Lidt besynderligt?
Avatar billede miwu.tk Nybegynder
20. juni 2006 - 15:51 #4
hov, jeg burde muske også lige poste ændringerne.

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("forum.mdb")
Conn.Open DSN

    strSQL = "Update [Entries] set "
    strSQL = strSQL & "[name]= '" & Replace(Request.Form("Name"), "'", "''") & "', "
    strSQL = strSQL & "[subject]= '" & Replace(Request.Form("Subject"), "'", "''") & "', "
    strSQL = strSQL & "[comment]= '" & Replace(Request.Form("Comment"), "'", "''") & "', "
    strSQL = strSQL & "[date]= '" & Now & "', "
    strSQL = strSQL & "[ip]= '" & (strIP) & "'"
    strSQL = strSQL & " Where [id] = " & Request.querystring("id")

'conn.execute(strSQL)
Response.Write(strSQL)

Conn.Close
Set Conn = Nothing

Jeg fandt ud af at messageid og forumid var overflødige i den her sammenhæng, og at der var noget med datatype der var forkert i databasen.
Avatar billede sneakraid Nybegynder
20. juni 2006 - 17:22 #5
Så skal du lige fjerne ' apostroffen fra Conn.Execute(strSQL), da apostroffen jo udkommenterer den linie som udfører din sql sætning.
Like this:

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("forum.mdb")
Conn.Open DSN

    strSQL = "Update [Entries] set "
    strSQL = strSQL & "[name]= '" & Replace(Request.Form("Name"), "'", "''") & "', "
    strSQL = strSQL & "[subject]= '" & Replace(Request.Form("Subject"), "'", "''") & "', "
    strSQL = strSQL & "[comment]= '" & Replace(Request.Form("Comment"), "'", "''") & "', "
    strSQL = strSQL & "[date]= '" & Now & "', "
    strSQL = strSQL & "[ip]= '" & (strIP) & "'"
    strSQL = strSQL & " Where [id] = " & Request.querystring("id")

Conn.execute(strSQL)
'Response.Write(strSQL)

Conn.Close
Set Conn = Nothing
Avatar billede miwu.tk Nybegynder
20. juni 2006 - 18:17 #6
Hvor er jeg ufattelig dum og blind.. de fleste burde tro at jeg er en kraft idiot når jeg overser sådan noget, hehe.

Tusind tak for hjælpen! Du er velkommen til at modtage point nu :)
Avatar billede sneakraid Nybegynder
21. juni 2006 - 08:51 #7
Hehe, vi er her for at hjælpe hinanden ;)
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

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