22. maj 2001 - 13:36
Der er
19 kommentarer og 1 løsning
Problem med indsættelse af værdi i db
Hejsa! Jeg har følgende kode, som bliver brugt til at tilføje data i min database: DIM CONNECT, ONTilfoej SET CONNECT = SERVER.CREATEOBJECT(\"ADODB.CONNECTION\") CONNECT.OPEN \"DRIVER={Microsoft ACCESS DRIVER (*.MDB)}; DBQ=\" & Server.MapPath (\"../DATABASER/licenser.MDB\") %> <% SET ONTilfoej = CONNECT.EXECUTE (\"INSERT INTO Medier (MedieNR, Navn, Opgradering, Medietype, Kommentar, Noegle) VALUES (\'\"+ REQUEST.QUERYSTRING(\"MedieNR\")+\"\',\'\"+ REQUEST.QUERYSTRING(\"Navn\")+\"\',\'\"+ REQUEST.QUERYSTRING(\"Opgradering\") +\"\',\'\"+ REQUEST.QUERYSTRING(\"Medietype\") +\"\',\'\"+ REQUEST.QUERYSTRING(\"Kommentar\") + +\"\',\'\"+ REQUEST.QUERYSTRING(\"Noegle\") +\"\')\") %> Jeg får sendt data herfra: <FORM ACTION=\"TilfoejLicensNu.asp\" NAME=\"Tilfoej\"> <TABLE BORDER=\"0\"> <TR> <TD>Medienr</TD> <TD><INPUT TYPE=\"Text\" SIZE=\"4\" MAXLENGTH=\"4\" NAME=\"Medie\"></TD> </TR> <TR> <TD>Navn</TD> <TD><INPUT TYPE=\"Text\" SIZE=\"60\" MAXLENGTH=\"60\" NAME=\"Navn\"></TD> </TR> <TR> <TD>Opgradering</TD> <TD><INPUT TYPE=\"Text\" SIZE=\"20\" MAXLENGTH=\"20\" NAME=\"Opgrad\"></TD> </TR> <TR> <TD>Medietype</TD> <TD><INPUT TYPE=\"Text\" SIZE=\"20\" MAXLENGTH=\"20\" NAME=\"Type\"></TD> </TR> <TR> <TD>Kommentar</TD> <TD><TEXTAREA WRAP=\"on\" ROWS=\"5\" COLS=\"51\" NAME=\"Kommentar\"></TEXTAREA></TD> </TR> <TR> <TD>Nøgle</TD> <TD><INPUT TYPE=\"Text\" SIZE=\"40\" MAXLENGTH=\"40\" NAME=\"Noegle\"></TD> </TR> <TD> </TD> <TD> </TD> </TR> <TR> <TD><INPUT TYPE=\"submit\" VALUE=\"Gem ændring\" NAME=\"send\"></TD> <TD><INPUT TYPE=\"reset\" VALUE=\"Nulstil felter\" NAME=\"Reset\"></TD> </TR> </TABLE> </FORM> Mit problem er at jeg får denne besked, selv om jeg har udfyldt alle felter, når jeg tester på det: Microsoft OLE DB Provider for ODBC Drivers error \'80004005\' [Microsoft][ODBC Microsoft Access Driver] Field \'Medier.MedieNR\' cannot be a zero-length string. /Licenser/Dynamiske/TilfoejLicensNu.asp, line 12 Er der nogen der kan forklare hvad jeg gør forkert?
Annonceindlæg fra Cognizant
Agentic AI kræver mere end teknologi
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
Hvis MedieNR er et tal skal der ikke \'\' omkring ..VALUES (\"+ REQUEST.QUERYSTRING(\"MedieNR\")+\",\'\"+ .. Der skal kun \'\' omkring tekst.
I VB ASP skal du benytte & istedet for + når du ligger strenge sammen.
det giver: SET ONTilfoej = CONNECT.EXECUTE (\"INSERT INTO Medier (MedieNR, Navn, Opgradering, Medietype, Kommentar, Noegle) VALUES (\'\"& REQUEST.QUERYSTRING(\"MedieNR\")&\"\',\'\"& REQUEST.QUERYSTRING(\"Navn\")&\"\',\'\"& REQUEST.QUERYSTRING(\"Opgradering\") &\"\',\'\"& REQUEST.QUERYSTRING(\"Medietype\") &\"\',\'\"& REQUEST.QUERYSTRING(\"Kommentar\") &\"\',\'\"& REQUEST.QUERYSTRING(\"Noegle\") &\"\')\")
Er medieNr ikke af typen tal i databasen?? hvis den er det, må du ikke have \' foran og bagved. Weje
>>Weje - Hvis du kigger lidt højere oppe har eagleeye allerede spurgt om dette
Har lige prøvet med eagleeyes forslag - det giver stadig følgende fejl: Microsoft OLE DB Provider for ODBC Drivers error \'80004005\' [Microsoft][ODBC Microsoft Access Driver] Field \'Medier.MedieNR\' cannot be a zero-length string. /Licenser/Dynamiske/TilfoejLicensNu.asp, line 12
Det tyder på at REQUEST.QUERYSTRING(\"MedieNR\") er tom. Kommer det fra en form eller fra linket(side.asp?MediaNR=III). ?
Du kan se længere oppe af siden, hvilken form jeg har sendt data fra - jeg har prøvet ud fra disse sider med værdien 9999 i alle felter - for at kunne genkende den i min db, når den senere skal slettes
Prøv at ændre REQUEST.QUERYSTRING til REQUEST.FORM
Jeg så lige her: <INPUT TYPE=\"Text\" SIZE=\"4\" MAXLENGTH=\"4\" NAME=\"Medie\"> Input name er Medie ..når du hendter kalder du den MedieNR i Request.Form(\"MedieNR\") Endten skal navnet i INPUT TYPE eller i request ændres....
hehe - den så jeg også lige selv før - har fået den ændret - og har fået request.for i stedet for request.querystring - men stadig samme billede
Det samme med: REQUEST.QUERYSTRING(\"Opgradering\") +\"\',\'\"+ REQUEST.QUERYSTRING(\"Medietype\") Opgradering i INPUT TYPE name=Opgrad Medietype i INPUT TYPE name=type
hilken fejl får du nu? stadig på samme felt?
Desværre - nøjagtig samme fejl - Microsoft OLE DB Provider for ODBC Drivers error \'80004005\' [Microsoft][ODBC Microsoft Access Driver] Field \'Medier.MedieNR\' cannot be a zero-length string. /Licenser/Dynamiske/TilfoejLicensNu.asp, line 12
har du mulighed for at prøve at udskrive request.form(\"medienr\") så du tjekke om den får fat i nogle data? Du skal nok havd nogle HTML tags ind: <html> <body> response.write request.form(\"medienr\") </body> </html>
jeg vil prøve - men jeg vender nok først tilbage i morgen med respons - jeg har noget andet jeg skal nå i dag...
Hvis du har to sekunder kan du evt prøve: <FORM ACTION=\"TilfoejLicensNu.asp\" NAME=\"Tilfoej\" METHOD=POST>
det virkede sgu\'! - tak for hjælpen!
Kurser inden for grundlæggende programmering