[asp]Server.Execute

Pagina: 1
Acties:
  • 111 views sinds 30-01-2008
  • Reageer

  • paragon
  • Registratie: April 2000
  • Laatst online: 25-05 18:03
Ik dacht even handig te zijn door gebruik te maken van Server.Execute ipv het gebruik maken van een include. Het scheelt me erg veel code want ipv van een steeds groter wordende Select Case Page is ern u alleen de volgende regel nodig: Server.Execute "inc/"+Page+".inc"

Alleen nu slik krijg ik dus een error op het volgende stukje code uit een bestand dat ge-execute wordt.: adoRs.CursorLocation = adUseClient Bij het gebruik van inlude werkt het dus wel gewoon :?

De error bij gebruik van Server.Execute:
ADODB.Recordset error '800a0bb9'

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

/beta/inc/home.inc, line 25
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<div class="page">HOME</div>
<div class="text">
<%
    Dim adoConn     
    Dim adoRs       
    Dim database        
    Dim Index
    Dim strSQL
    Dim offset
    Dim prev
    Dim numRecs
    Dim totalRecs

    database = Server.Mappath("db/content.mdb")
    offset = Request.QueryString("offset")
    numRecs = 5

    strSQL = "SELECT Topic,Content,Posted FROM tblContent ORDER BY Posted DESC"
            
    Set adoConn = Server.CreateObject("ADODB.Connection")
    adoConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & database


    Set adoRs = Server.CreateObject("ADODB.Recordset")
    adoRs.CursorLocation = adUseClient
    adoRs.Open strSQL, adoConn,,adLockReadOnly, adCmdText

    totalRecs = adoRs.RecordCount

    'Response.Write totalRecs

    adoRs.absolutePosition = 1
    If offset > 1 Then
        adoRs.absolutePosition = offset+1
    End If

    prev = offset-numRecs
    'Response.Write "prev = " &prev& "<br />"
    offset = offset+numRecs
    %>
    <table class="browse"><tr>
    <td>
    <%
    If prev >= 0 Then
        %>
        <a href="./?offset=<%=prev%>">previous</a>
        <%
    Else
        Response.Write "previous"       
    End If
    %>
    </td>
    <td>
    <%
    If offset < totalRecs Then
        %>
        <a href="./?offset=<%=offset%>">next</a>
        <%
    Else
        Response.Write "next"
    End If
    %>
    </td>
    </tr>
    </table>
    <div>
    <%

    'loop throug database
    Dim y
    FOR y=1 to numRecs
    'WHILE NOT adoRs.EOF
    %>
    <div class="topic"><%=adoRs("topic")%> | <%=adoRs("posted")%></div>
    <div class="content"><%=adoRs("Content")%></div>    
    <%
    adoRs.Movenext
    'WEND
    If adoRs.EOF Then Exit For
    next
    adoRs.Close
    adoConn.Close
    %>
    </div>
</div>

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Voor mensen die liever een errormelding zien:

"ADODB.Recordset error '800a0bb9'.
The application is using arguments that are of the wrong type, are out
of acceptable range, or are in conflict with one another".

Ik kan je verder helaas niet echt helpen.

Localhost, sweet localhost


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:03
Het heeft te maken met uw sql string.
Die foutmelding geeft Access ook als je bv. columnnames of tablenames in uw sql string verkeerd gespeld hebt.
Maar aangezien je zegt dat, als je een include gebruikt het wel werkt, zal het misschien wel ergens anders aan liggen..... Maar waar.... Geen idee.

[ Voor 34% gewijzigd door whoami op 28-01-2003 10:59 ]

https://fgheysels.github.io/


  • paragon
  • Registratie: April 2000
  • Laatst online: 25-05 18:03
@kdveer:Wat bedoel je voor met voor mensen die leiver een error melding zien?

Kan me niet voorstellen dat het aan de SQL string ligt want: hetzelde bestand werkt wel als include zoals al uitgelegd staat in mijn post. <- je had het ook al door ;)

Maar eignelijk is het heel erg vervelend omdat bij het gebruik van include alle includes geladen worden en dat kost natuurlijk veel meer dan een enkele Server.Execute.

[ Voor 86% gewijzigd door paragon op 28-01-2003 11:02 ]


Verwijderd

Je dient wellicht adovbs.inc opnieuw te includen, of bepaalde constanten (adUseClient, adLockReadOnly, adCmdText) opnieuw te definiëren.

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Juist.

Tip: zet boven aan elke pagina die geen include is <% Option Explicit %> dan weet je tenminste welke variabelen ontbreken. :)

[ Voor 6% gewijzigd door Gert op 28-01-2003 13:33 ]


  • paragon
  • Registratie: April 2000
  • Laatst online: 25-05 18:03
het was dus het opnieuw includen van adovbs.inc dat het hem deed.

@Gert: als je in een pagina meerdere includes hebt die ongeveer de zelfde code hebben dan oet je in elke include alle varibalen anders noemen dan een andere include option explicit was dus geen optie in dit gevaal. echter met Server.Execute kan het weer wel.

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Bij een include worden de bestanden eerst samengevoegd voor deze door de parser gaan. Eigenlijk heb je dus gewoon 1 enkel bestand wat uitgevoerd wordt. Vandaar ook dat je de beschikking hebt over alle gedefinieerde constanten

Bij Server.Execute voer je een ander bestand uit op de server waarna je terugkeert naar het "caling" script. De twee bestanden staan dus los van elkaar.

b.t.w. Option Explicit is inderdaad geen oplossing tot het probleem, maar vaak wel een manier om sneller tot de oplossing te komen. M.a.w. neem de tip van Gert toch maar ter harte.

Today's subliminal thought is:


  • paragon
  • Registratie: April 2000
  • Laatst online: 25-05 18:03
Annie ik weet wel hoe het erkt met het includen daarom ben ik voor de Server.Execute gegaan. en ik weet ook wat option explicit doet...Ik heb dat er normaal ook latijd instaan maar nu dus niet omdat ik eerst die includes had en dus alle variabelen moest gaan hernoemen wat ik in mijn vorige post ook al aangaf.
Pagina: 1