Ga naar inhoud

ASP Insertfout lege tekenreeks?


Aanbevolen berichten

Hallo, Ik heb een formulier voor het invullen van gegevens (aanmexamen.asp) en een pagina waarmee een record moet worden toegevoegd (toevoegexamen.asp). Na 'Verzenden'krijg ik steeds een foutmelding over een lege tekenreeks. Ik dacht eerst dat het lag aan de listbox en daarna aan een javascrit in de formulierpagina. E.e.a verwijderd maar dat helpt niet. Het rare is dat ik dezelfde pagina's (met andere inhoud) heb gebruikt om e.e.a. uit te proberen en dat werkt perfect. Hier de code van de twwe pagina's. Wat heb ik verkeerd gedaan? ---------- Code van het formulier <body> <h1>Aanmelden examen</h1> <table width="500" border="0" cellspacing="3" cellpadding="3" align="center"> <tr align="left" valign="top"> <td nowrap> <form method="post" action="toevoegexamen.asp" name="examen" enctype="text/plain"> <table width="550" border="0" cellspacing="0" cellpadding="0" name="aanmelden" bgcolor="#CCCCCC" align="center"> <tr align="left" valign="top"> <td nowrap bgcolor="#000066" colspan="2"><font color="#FFFFFF"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="3">Aanmelden voor</font></b></font></td> <td colspan="3" nowrap align="right"> <div align="center"><b>*Vul s.v.p 3 voorkeurdata en tijden in. <br> Houd hierbij rekening met een wachttijd van &plusmn; 8 dagen.<br> </b></div> <div align="right"></div> </td> </tr> <tr align="left" valign="top"> <td bgcolor="#CCCCCC" colspan="2"> <div align="right">Examen </div> </td> <td> <div align="left"> <select name="examennaam" size="1"> <option>A+</option> <option>Adobe PhotoShop 5.5</option> <option>MOUS Word</option> <option>MOUS Excel</option> <option>MOUS Access</option> <option>MOUS PowerPoint</option> <option>MOUS Outlook</option> <option>Network+</option> <option>MCSD Core 70-100</option> <option>MCSD Elective</option> <option>MCSD Core 70-176</option> <option>MCSD Core 70-175</option> <option>MCSD Elective 70-229</option> <option>MCSD Elective 70-152</option> </select> </div> </td> <td> <div align="right">SP nummer </div> </td> <td width="100"> <input type="text" name="spnummer" size="20"> </td> </tr> <tr align="left" valign="top"> <td bgcolor="#CCCCCC" colspan="2"> <div align="right">Datum </div> </td> <td width="146"> <div align="left"> <input type="text" name="exdatum1" size="20"> </div> </td> <td width="154"> <div align="left"> <input type="text" name="exdatum2" size="20"> </div> </td> <td width="100"> <div align="left"> <input type="text" name="exdatum3" size="20"> </div> </td> .............rest van de velden <tr align="left" valign="top"> <td nowrap colspan="2"> <input type="submit" name="Verzenden" value="Verzenden" style="color: #FFFFFF; background: #000066; font-weight: bold; width: 120px; height: 30px;"> </td> <td nowrap colspan="3"> <div align="right"> <input type="reset" name="Herstel" value="Herstel" style="color: #FFFFFF; background: #000066; font-weight: bold; width: 120px; height: 30px;"> </div> </td> </tr> </table> </form> <p>&nbsp;</p> </td> </tr> </table> <p>&nbsp;</p> <p><br> <br> </p> </body> </html> *********************************** Code Toevoegexamen.asp <HTML> <HEAD><TITLE>Verwerking gegevens</TITLE> </HEAD> <BODY> <% 'declareer variabelen' Dim DbConn Dim DbConnStr Dim DbPad Dim Rsexamen Dim Sqlexamen Dim strexamennaam, strspnummer, strexdatum1, strexdatum2, strexdatum3, strextijd1, strextijd2, strextijd3, straanhef, strfaanhef, strnaam, strfnaam, strbedrijf, strfbedrijf, stradres, strfadres, strpostcode, strfpostcode, strplaats, strfplaats, strtelefoon, strftelefoon, stremailadres, strfemailadres, strbetaling 'Waarden uit formulier - examennaam is waarde uit keuzelijst strexamen=request.form("examennaam") strspnummer=request.form("spnummer") strexdatum1=request.form("exdatum1") strexdatum2=request.form("exdatum2") strexdatum3=request.form("exdatum3") strextijd1=request.form("extijd1") strextijd2=request.form("extijd2") strextijd3=request.form("extijd3") straanhef=request.form("aanhef") strfaanhef=request.form("faanhef") strnaam=request.form("naam") strfnaam=request.form("fnaam") strbedrijf=request.form("bedrijf") strfbedrijf=request.form("fbedrijf") stradres=request.form("adres") strfadres=request.form("fadres") strpostcode=request.form("postcode") strfpostcode=request.form("fpostcode") strplaats=request.form("plaats") strfplaats=request.form("fplaats") strtelefoon=request.form("telefoon") strftelefoon=request.form("ftelefoon") stremailadres=request.form("emailadres") strfemailadres=request.form("femailadres") strbetaling=request.form("betaling") 'Maak database connectie' Set DbConn = Server.CreateObject("Adodb.Connection") Set Rsexamen = Server.CreateObject("Adodb.Recordset") DbPad = Server.MapPath("databases/formulieren.mdb") DbConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DbPad 'Voeg gegevens toe aan database ' DataQuery="INSERT INTO examen(examennaam, spnummer, exdatum1, exdatum2, exdatum3, extijd1, extijd2, extijd3, aanhef, faanhef, naam, fnaam, bedrijf, fbedrijf, adres, fadres, postcode, fpostcode, plaats, fplaats, telefoon, ftelefoon, emailadres, femailadres, betaling) VALUES('"&strexamennaam&"', '"&strspnummer&"','"&strexdatum1&"', '"&strexdatum2&"', '"&strexdatum3&"', '"&strextijd1&"', '"&strextijd2&"', '"&strextijd3&"', '"&straanhef&"', '"&strfaanhef&"', '"&strnaam&"', '"&strfnaam&"', '"&strbedrijf&"', '"&strfbedrijf&"', '"&stradres&"', '"&strfadres&"', '"&strpostcode&"', '"&strfpostcode&"', '"&strplaats&"', '"&strfplaats&"', '"&strtelefoon&"', '"&strftelefoon&"', '"&stremailadres&"', '"&strfemailadres&"', '"&strbetaling&"')" DbConn.Open DbConnStr DbConn.Execute(DataQuery) DbConn.Close %> </BODY> </HTML>
Link naar reactie
Het is me uit de vraagstelling niet helemaal duidelijk of het mogelijk moet zijn om "lege" waarden in te voeren. Zo ja, dan kan je in de database bij de tabelvelden controleren of de optie "Allow zero length" op "no" staat. Zo nee, dan zal je dat af moeten vangen in het script. Bijvoorbeeld met een default waarde of door een foutmelding te geven naar de gebruiker. (ik ga er even van uit dat je geen typefouten hebt gemaakt in de inputnamen) [color=darkred:b8bbfed599]Tip:[/color:b8bbfed599] Schrijf bij foutmeldingen altijd even de query naar het scherm zonder deze uit te voeren. Zo haal je in 9 van de 10 gevallen al meteen de fout eruit. En zo niet dan kan je deze kopieren en plakken in je database en daar uitvoeren. Deze geeft vaak duidelijkere foutmeldingen of betere mogelijkheden om te debuggen.
Link naar reactie
Nu voel ik me echt stom want ik weet niet precies wat je bedoelt met query naar scherm schrijven. Het toestaan van lege velden is (nog) niet aan de orde want ik vul alle velden met waarden voor ik verzend. De foutmelding verwijst naar regel 51 in toevoegexamen.asp. Da's volgens mij de regel met Dataquery= Ja ik heb alles over en over gecontroleerd. E is nergens een typefout er zijn overal evenveel velden enz. Ik weet dat het waarschijnklijk iets heel lulligs is maar wat... kom er zelf niet uit.
Link naar reactie
INSERT INTO examen(examennaam, spnummer, exdatum1, exdatum2, exdatum3, extijd1, extijd2, extijd3, aanhef, faanhef, naam, fnaam, bedrijf, fbedrijf, adres, fadres, postcode, fpostcode, plaats, fplaats, telefoon, ftelefoon, emailadres, femailadres, betaling) VALUES('', '','', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '') Staat er op het scherm maar in het formulier had ik waarden ingevuld
Link naar reactie
Onderstaande subje is misschien handig bij het debuggen (om te kijken wat je allemaal binnenkrijgt via je form). Gewoon ergens in je script de aanroep van deze sub plaatsen. [code:1:180dfb51db] <% sub debugInfo dim sItem response.write "<p style='color:red'>" ' write GET vars response.write "==== GET ==================================================<br />" for each sItem in request.querystring response.write sItem & " = " & request.querystring(sItem) & "<br />" next ' write POST vars response.write "==== POST =================================================<br />" for each sItem in request.form response.write sItem & " = " & request.form(sItem) & "<br />" next response.write "===========================================================<br />" response.write "</p>" end sub %> [/code:1:180dfb51db]
Link naar reactie
Nu heb ik het werkende formulier genomen dat wel gegevens toevoegt aan een database. Allebei de pagina's aangepast voor de database formulieren. Hij roept niet eens het debugscript aan (wat ie in het andere wel netjes doet) en geeft: Soort fout: Microsoft JET Database Engine (0x80004005) Het veld examen.examennaam kan geen tekenreeks zonder gegevens zijn. /actietvexamen.asp, line 53 Soort browser: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; KITXP40NL) Pagina: POST 107 bytes naar /actietvexamen.asp POST Data: examennaam=MCSD+Core+70-100&spnummer=nvt&exdatum1=10-10-02&exdatum2=11-10-02&exdatum3=12-10-02&B1=Verzenden Tijd: vrijdag 19 juli 2002, 8:34:42 Ik snap er niks meer van......
Link naar reactie
Het werk!!! Ik heb de verwijzing naar de tabelnaam (Insert to examen(...)) veranderd in Examen. En nu doet ie ut. Toch blijf ik het raar vinden want in Access staat de tabelnaam gewoon in kleine letters. Nou ja..... ik kan weer verder. Annie heel hartelijk bedankt voor de hulp. Ik ga verder stoeien maar ben bang...... dat ik het nog steeds niet alleen kan..... :) Sjaan
Link naar reactie
Heb je toevallig de "friendly HTTP errors" aan staan in je browser? [i:35e4f1d229][color=blue:35e4f1d229](Tools >> internet options >> advanced >> browsing)[/color:35e4f1d229].[/i:35e4f1d229] Zo ja, dan kan je deze beter even uitzetten. In de foutmelding die je hierboven neerzet zie ik overigens dat de POST-data vrij leeg is. Wat dus de foutmelding kan verklaren.
Link naar reactie
Het was maar een schijnbeweging. Het vorige formuliertje had ik nieuwe gemaakt met een stuk of vier velden. Dat werkte 1 keer en daarna niet meer. Ik heb de friendly errors uitgezet. Ik stop er mee.... met het wijzigen enzo. Ik ga helemaal overnieuw beginnen. Inmiddels krijg ik wel een zootje in mijn wwwroot van allemaal verschillende asp pagina's. Mogen die ook gewoon in een aparte map? Sjaan
Link naar reactie
Als je een vraag stelt lees dan de antwoorden goed!!! :oops: In het eerste antwoord had je een opmerking over de database instelling ofwel de velden. Omdat in de tabel geen veld op vereist stond heb ik er niet meer naar gekeken. Alle formulieren werken nu doordat de eigenschap Lengte nul toestaan in de database op Ja is gezet. Nogmaals bedankt, dit probleem is over.....op naar het volgende. Ik beloof dat ik beter zal lezen.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...