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] fout in script

Anoniem
None
6 antwoorden
  • hey,
    ik heb het volgende script

    [code:1:8cef864b14]

    <%
    Dim MyConnection
    Dim MyRecordset
    Set MyConnection = Server.CreateObject("ADODB.Connection")
    Set MyRecordset = Server.CreateObject("ADODB.Recordset")

    Call Myconnection.open ( _
    "Driver={microsoft Access Driver (*.mdb)};" & _
    "DBQ=" & DB_FILE)
    Call MyRecordset.Open ("SELECT * FROM user WHERE usernummer = " & request("paramusernummer"), MyConnection)

    intPage = Request.QueryString("nummer")

    MyRecordset.PageSize = 1
    MyRecordset.AbsolutePage = intPage <<<< REGEL 30 <<<<<<

    For intRecord = 1 To MyRecordset.PageSize
    Response.Write(MyRecordset.Fields("Naam").Value)
    MyRecordset.MoveNext
    If MyRecordset.EOF Then Exit For
    Next

    If intpage > 1 Then
    Response.Write("<a href=""gebruikers2.asp?nummer="&intpage-1&""">Vorige record</a>")
    End If

    If intpage < MyRecordset.Recordcount Then
    Response.Write("<a href=""gebruikers2.asp?nummer="&intpage+1&""">Volgende record</a>")
    End If
    %>
    [/code:1:8cef864b14]

    maar ik krijg de volgende foutmelding:
    [code:1:8cef864b14]
    ADODB.Recordset error '800a0bb9'

    Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

    /poolmate/beheerder/gebruikers2.asp, line 30
    [/code:1:8cef864b14]

    Weet iemand wat ik fout doe?
  • intPage is geen (geldige) integer of de waarde valt buiten de reeks waarden die geldig zijn in deze situatie.

    m.a.w. [i:bb511e39c9]response.write[/i:bb511e39c9] de waarde eens om te kijken of deze inderdaad de waarde bevat die je daar verwacht en/of maak er een integer van met [i:bb511e39c9]CInt()[/i:bb511e39c9]
  • Hey

    je had gelijk, maar nu heb ik een andere melding namelijk deze
    [code:1:25b0e3fd16]
    Microsoft JET Database Engine error '80040e14'

    Syntax error in FROM clause.

    /poolmate/beheerder/gebruikers2.asp, line 28
    [/code:1:25b0e3fd16]

    de code zelf is alvolgt

    [code:1:25b0e3fd16]
    <%
    Dim MyConnection
    Dim MyRecordset

    ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB_FILE & ";Persist Security Info=False"

    Set MyConnection = Server.CreateObject("ADODB.Connection")
    Myconnection.Open ConnectionString

    strSQL = "SELECT * " _
    & "FROM user " _
    & "WHERE usernummer = " & request("paramusernummer")
    Set MyRecordset = Server.CreateObject("ADODB.Recordset")
    MyRecordset.Open strSQL, MyConnection, 3, 1 <<<<LINE 28 <<<<<

    If Request.QueryString("nummer") = "" Then
    intPage = 1
    Else
    intPage = Request.QueryString("nummer")
    End If

    MyRecordset.PageSize = 1
    MyRecordset.AbsolutePage = intPage

    For intRecord = 1 To MyRecordset.PageSize
    Response.Write(MyRecordset.Fields("Naam").Value)
    MyRecordset.MoveNext
    If MyRecordset.EOF Then Exit For
    Next

    If intPage > 1 Then
    Response.Write("<a href=""gebruikers2.asp?nummer="&intPage-1&""">Vorigerecord</a>")
    End If

    If intPage < MyRecordset.Recordcount Then
    Response.Write("<a href=""gebruikers2.asp?nummer="&intPage+1&""">Volgende record</a>")
    End If

    MyRecordset.Close
    Set MyRecordset = Nothing

    MyConnection.Close
    Set MyConnection = Nothing
    %>[/code:1:25b0e3fd16]
  • Het beste wat je kan doen bij fouten in je query is deze even wegschrijven naar het scherm. Vaak zie daar al waar het aan ligt (bijvoorbeeld variabelen die leeg zijn). En anders kan je de query kopieren & plakken in je database software om te kijken of deze daar wel foutloos uitgevoerd wordt of misschien een duidelijkere foutmelding geeft.

    Zo op het eerste gezicht zie ik overigens niet iets wat er fout kan zijn in je query (tenzij [i:46b4797a7e]paramusernummer[/i:46b4797a7e] leeg is, maar dan had ik een andere foutmelding verwacht). zomaar een gok: misschien dat [i:46b4797a7e]user[/i:46b4797a7e] een reserved word is –> probeer eens [i:46b4797a7e][user][/i:46b4797a7e]
    Het is overigens nooit een goed idee om rechtstreeks user-input ([i:46b4797a7e]request object[/i:46b4797a7e]) in te voeren in de database. Data wat van de client komt kan je het best bij voorbaat wantrouwen ;). M.a.w. eerst zelf controleren/parsen/casten/whatever.

    Succes.
  • Je moet kijken of je de tabelnamen niet verkeerd heb gespelt. Ook is het beter de request("paramusernummer") eerst in een variabele te zetten. Dus i.p.v.

    strSQL = "SELECT * " _
    & "FROM user " _
    & "WHERE usernummer = " & request("paramusernummer")

    maar:

    parnum = request("paramusernummer")

    strSQL = "SELECT * " _
    & "FROM user " _
    & "WHERE usernummer = " & parnum
  • [quote:595dc6a56e="HarrySnotter"]Je moet kijken of je de tabelnamen niet verkeerd

Beantwoord deze vraag

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