Avatar billede Jman Praktikant
31. juli 2003 - 13:20 Der er 25 kommentarer og
2 løsninger

server.execute vs. ren #include file

Jeg har en asp-side, der virker med almindelig <!-- #include file="inc_default.asp"-->
Den skriver jeg så om, da jeg vil gøre mit site mere dynamisk:
<% if Request.querystring("page") = "" or null then
page = "inc_default.asp"
else
page = Request.querystring("page")
end if
side = page
server.execute(side)
<!-- #include file=request("page") -->
%>
Men så får jeg en fejl i min SQL-query:
Microsoft VBScript runtime error '800a01a8'

Object required: ''

/websupport_v2/inc_default.asp, line 16

Hvorfor kan man ikke det ?
Avatar billede bredum Nybegynder
31. juli 2003 - 13:26 #1
dette kan du ikke gøre med i en include kan ikke indeholde en variabel.
Avatar billede cesil Nybegynder
31. juli 2003 - 13:27 #2
prøv
<% if Request.querystring("page") = "" or null then
    page = "inc_default.asp"
else
    page = Request.querystring("page")
end if

server.execute(page)

%>
Avatar billede bredum Nybegynder
31. juli 2003 - 13:33 #3
Et eks.
<%
sprog = Request.QueryString("sprog")
Server.Execute(sprog & ".asp")
%>
Avatar billede Jman Praktikant
31. juli 2003 - 13:39 #4
bredum: Det kan godt lade sig gøre på et andet site, jeg administrerer .....
cesil: samme fejl :(
Avatar billede bredum Nybegynder
31. juli 2003 - 13:52 #5
Hvad med denne??
<% if Request.querystring("page") = "" or null then
    page = "inc_default"
else
    page = Request.querystring("page")
end if
Server.Execute(page & ".asp")
%>
Avatar billede cesil Nybegynder
31. juli 2003 - 13:52 #6
hvad står der i websupport_v2/inc_default.asp, line 16

det er jo på den side du prøver og include du får en fejl
Avatar billede cesil Nybegynder
31. juli 2003 - 13:54 #7
det her ser forkert ud
if Request.querystring("page") = "" or null then

prøv
if Request.querystring("page") = "" then
Avatar billede Jman Praktikant
31. juli 2003 - 13:54 #8
The call to Server.Execute failed while loading the page.
Avatar billede cesil Nybegynder
31. juli 2003 - 13:55 #9
null er databasesprog
Avatar billede cesil Nybegynder
31. juli 2003 - 13:56 #10
hvad hedder den side du forsøger at include i
Avatar billede cesil Nybegynder
31. juli 2003 - 13:57 #11
prøv lige

<% if Request.querystring("page") = "" then
    page = "test.asp"
else
    page = Request.querystring("page")
end if

server.execute(page)

%>
Avatar billede keysersoze Ekspert
31. juli 2003 - 13:57 #12
du kan ikke benytte <!-- #include file="xxx.html" -->  som dynamisk inklude - der SKAL stå en fast html/asp side. Eneste mulighed er at du kører din if-sætning så den inkludere den fil der skal bruges fx;

<%
if noget = "test" then
  %><!-- #include file="xxx.html" --><%
else
  %><!-- #include file="yyy.html" --><%
end if
%>

server.execute har en del ulemper - fx kan variabler ikke genbruges på en side inkluderet på den måde og du kan hellere ikke overføre querystrings.

KAN server.exeute("xxx.asp")
KAN IKKE server.execute("xxx.asp?id=test")

men derudover kan du med den godt køre med dynamiske inkludes
Avatar billede Jman Praktikant
31. juli 2003 - 14:05 #13
keysersoze: Jo tak ... men mit problem er ikke at medføre en variabel, for den henter jeg på anden vis. Så derfor virker min server.execute jo...

cesil: kaldet der giver fejl er :
    SQL = "SELECT Opgave.*, Prioritet.Tekst FROM Opgave, Prioritet WHERE Prioritet.Nummer=Opgave.Prioritet AND Ansvarlig = '" & initialer & "' AND Afsluttet=0 Order By " & sortkey
    SQL = SQL & " ASC;"
    set rs = Conn.Execute(sql)
Avatar billede Slettet bruger
31. juli 2003 - 14:10 #14
Din sortkey er måske tom?
Avatar billede Jman Praktikant
31. juli 2003 - 14:11 #15
nope ...
<%
    DIM sortkey
    sortkey = Request.QueryString("sortkey")
    IF len(sortkey) < 1 THEN
      sortkey = "opgave.priornr, id, opgave.Ansvarlig"
    END IF
%>

<%
    SQL = "SELECT Opgave.*, Prioritet.Tekst FROM Opgave, Prioritet WHERE Prioritet.Nummer=Opgave.Prioritet AND Ansvarlig = '" & initialer & "' AND Afsluttet=0 Order By " & sortkey
    SQL = SQL & " ASC;"
    set rs = Conn.Execute(sql)
%>
<%    IF rs.eof THEN %>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
    <td class="Headline">Der ligger ingen uafsluttede opgaver, hvor du er ansvarlig</td>
  </tr>
</table>
    <% END IF %>
    <% IF NOT rs.EOF THEN %>
o.s.v. o.s.v.
Avatar billede keysersoze Ekspert
31. juli 2003 - 14:11 #16
lige for din set rs prøv da;

response.write SQL
response.end

og fortæl hvad der så står
Avatar billede Jman Praktikant
31. juli 2003 - 14:14 #17
SELECT Opgave.*, Prioritet.Tekst FROM Opgave, Prioritet WHERE Prioritet.Nummer=Opgave.Prioritet AND Ansvarlig = 'JEJ' AND Afsluttet=0 Order By opgave.priornr, id, opgave.Ansvarlig ASC;
Avatar billede cesil Nybegynder
31. juli 2003 - 14:14 #18
har du de her linier i din include?

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("db.mdb;")
%>
Avatar billede cesil Nybegynder
31. juli 2003 - 14:15 #19
eller hvordan de nu ser ud hos dig
Avatar billede Slettet bruger
31. juli 2003 - 14:16 #20
Og du er sikker på felterne hedder det samme i databasen? Eks. priornr? Hvad med id hvor er den fra?
Avatar billede Jman Praktikant
31. juli 2003 - 14:19 #21
det er en OracleDB - men som sagt: <!-- #include file="inc_deault.asp" --> virker jo. Det er når jeg vil lave min side, hvorfra jeg laver includen så dynamisk, at jeg kan bruge den til alle underliggende sider (ved hjælp af server.execute) det går galt....
Avatar billede keysersoze Ekspert
31. juli 2003 - 14:20 #22
så kunne det umiddelbart tyde på at du ikke har skabt database-forbindelsen eller at den hedder noget andet end Conn

har du evt noget mere kode?
Avatar billede keysersoze Ekspert
31. juli 2003 - 14:22 #23
hvis jeg forstår dig ret...

du kan IKKE benytte variabler fra på tværs af sider du inkluderer vha server.execute. Dvs bruger du server.execute til inc_default.asp vil du KUN kunne benytte database-connectionen på inc_default.asp og ikke andre sider
Avatar billede Jman Praktikant
31. juli 2003 - 14:25 #24
jeps - du kan få det hele her:

<%
dim conn
dim rs
dim sql
Session("ConnectionString") = "dsn=websupport"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Session("ConnectionString")
%>
<table border="0" cellpadding="0" cellspacing="5">
  <tr>
    <td class="Headline">Dine uafsluttede opgaver:</td>
  </tr>
</table>
<%
    DIM sortkey
    sortkey = Request.QueryString("sortkey")
    IF len(sortkey) < 1 THEN
      sortkey = "opgave.priornr, id, opgave.Ansvarlig"
    END IF
%>

<%
    SQL = "SELECT Opgave.*, Prioritet.Tekst FROM Opgave, Prioritet WHERE Prioritet.Nummer=Opgave.Prioritet AND Ansvarlig = '" & initialer & "' AND Afsluttet=0 Order By " & sortkey
    SQL = SQL & " ASC;"
    set rs = Conn.Execute(sql)
    response.write sql
    response.end
%>
<%    IF rs.eof THEN %>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
    <td class="Headline">Der ligger ingen uafsluttede opgaver, hvor du er ansvarlig</td>
  </tr>
</table>
    <% END IF %>
    <% IF NOT rs.EOF THEN %>
<table border="1" cellpadding="4" cellspacing="0" width="100%" bordercolor="#000000">

.... visning
Avatar billede Slettet bruger
31. juli 2003 - 14:26 #25
Du mangler
Set rs= Server.CreateObject("ADODB.RecordSet")
Avatar billede Jman Praktikant
31. juli 2003 - 14:33 #26
Der var den - det var connection ... Jeg havde min connection i en include file også ... det kan den åbenbart ikke i en server.execute.
keysersoze: du ledte mig ind på det rigtige, så jeg vil tildele dig points, men er du OK med at jeg giver lidt til cesil... "for trying" ?
Avatar billede keysersoze Ekspert
31. juli 2003 - 14:42 #27
overhovedet ikke - det er jo dig der bestemmer det :)

så husk - ved include file/include virtual kan alt genbruges på både hovedsiden og det inkluderede - ved server.execute kan kun requests, sessions og cookies bruges på den inkluderede
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester