Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

ASP Insertfout lege tekenreeks?

None
12 antwoorden
  • 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>
  • 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)

    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.
  • 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.
  • [quote:a1e8d9d525="Sjaan"]Nu voel ik me echt stom want ik weet niet precies wat je bedoelt met query naar scherm schrijven.[/quote:a1e8d9d525]
    [code:1:a1e8d9d525]
    ' stukkie schrijven
    response.write DataQuery
    ' script stoppen
    response.end
    [/code:1:a1e8d9d525]
  • 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
  • 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]
  • 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……
  • 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
  • Heb je toevallig de "friendly HTTP errors" aan staan in je browser?
    [i: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.
  • 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
  • [quote:884a407fd5="Sjaan"]…krijg ik wel een zootje in mijn wwwroot van allemaal verschillende asp pagina's. Mogen die ook gewoon in een aparte map?[/quote:884a407fd5]natuurlijk, zolang ze maar binnen de wwwroot vallen kan je ze aanroepen via de browser.
  • 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.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.