/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
SQL-fejl
Fra : Peer Jespersen


Dato : 19-02-07 11:59

I min SQL-sætning:

strSQL="SELECT * FROM master"
rs = Conn.Execute(strSQL)
do
Response.Write("FNavn")
rs.MoveNext
loop while not rs.EOF

får jeg fejlmeddelelsen:

Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk
/ASP-eksempler/db01.asp, line 34

Umiddelbart kan jeg ikke selv se en fejl og søger jeg på
aspfaq.com får jeg ikke noget brugbart. Hvad gør jeg gal??

/peer

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (19-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-02-07 12:11

Peer Jespersen skrev:

> I min SQL-sætning:
>
> strSQL="SELECT * FROM master"
> rs = Conn.Execute(strSQL)

Fejlen er herover. I asp skal man bruge Set når der oprettes
objekter:

Set RS = Conn.Execute(strSQL)

> do
> Response.Write("FNavn")
> rs.MoveNext
> loop while not rs.EOF

Med konstruktionen herover udsætter du dig i øvrigt for endnu en
fejl - hvis postsættet er tomt, ryger du alligevel ind i løkken og
får en fejl ved response.write-linjen.

Flyt betingelsen op til Do - så undgår du den fejlmulighed:

Do While Not rs.EOF
   ...
Loop
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Peer Jespersen (19-02-2007)
Kommentar
Fra : Peer Jespersen


Dato : 19-02-07 12:20

Jens GyldenkærneClausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> Peer Jespersen skrev:
>
> > I min SQL-sætning:
> >
> > strSQL="SELECT * FROM master"
> > rs = Conn.Execute(strSQL)
>
> Fejlen er herover. I asp skal man bruge Set når der oprettes
> objekter:
>
> Set RS = Conn.Execute(strSQL)
>
Hej Jens,

Tak for svaret. Men fejlen er der stadig:

Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk
/ASP-eksempler/db01.asp, line 34

Det vil sige samme fejl.

/peer

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Peer Jespersen (19-02-2007)
Kommentar
Fra : Peer Jespersen


Dato : 19-02-07 12:22

Jens GyldenkærneClausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> Peer Jespersen skrev:
>
> > I min SQL-sætning:
> >
> > strSQL="SELECT * FROM master"
> > rs = Conn.Execute(strSQL)
>
> Fejlen er herover. I asp skal man bruge Set når der oprettes
> objekter:
>
> Set RS = Conn.Execute(strSQL)
>
Hej Jens,

Er prøvet og jeg får stadig samme fejl:

Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk
/ASP-eksempler/db01.asp, line 34

mvh peer

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (19-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-02-07 12:23

Peer Jespersen skrev:

> Tak for svaret. Men fejlen er der stadig:
>
> Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
> Et objekt er obligatorisk

O.k. - så er det nok Conn-objektet du ikke har oprettet korrekt.


Du skal have en linje med

Set Conn = Server.CreateObject("ADODB.Connection")

- og en anden med

Conn.Open ...

Se evt. tutorialen her:
<http://www.html.dk/tutorials/asp/lektion18.asp>
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Peer Jespersen (19-02-2007)
Kommentar
Fra : Peer Jespersen


Dato : 19-02-07 12:30

Jens GyldenkærneClausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> Peer Jespersen skrev:
>
> > Tak for svaret. Men fejlen er der stadig:
> >
> > Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
> > Et objekt er obligatorisk
>
> O.k. - så er det nok Conn-objektet du ikke har oprettet korrekt.
>
>
> Du skal have en linje med
>
> Set Conn = Server.CreateObject("ADODB.Connection")
>
> - og en anden med
>
> Conn.Open ...
>
> Se evt. tutorialen her:
> <http://www.html.dk/tutorials/asp/lektion18.asp>
Jeg oprette forbindelsen til databasen på følgende måde:

Set Conn = Server.CreateObject("ADODB.Connection")
strDsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("Access/Elever.mdb")
Conn.Open strDsn

/peer

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (19-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-02-07 12:42

Peer Jespersen skrev:

> Jeg oprette forbindelsen til databasen på følgende måde:
>
> Set Conn = Server.CreateObject("ADODB.Connection")
> strDsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
> Server.MapPath("Access/Elever.mdb")
> Conn.Open strDsn

Bruger du Option Explicit (hvis nej - eller du er i tvivl - så se
siden her: <http://asp-faq.dk/article/?id=9>).

Har du ændret ved fejlhåndteringen (On Error Resume Next eller
lignende)?

Koden herover ser ud til at være o.k. - vis evt. sammenhængen
mellem ovenstånde kodestump og den der fejler (altså vis asp-koden
startende fra Set Conn og sluttende med den linje der fejler.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Peer Jespersen (19-02-2007)
Kommentar
Fra : Peer Jespersen


Dato : 19-02-07 12:54

> fra Set Conn og sluttende med den linje der fejler.

Jeg bruger normal ikke Open Explicit, og der er opstår ikke nye
fejlmeddelelser selv om jeg gør det. Hele koden er:

Open Explicit
sub OpretDBForbindelse
<%
Set Conn = Server.CreateObject("ADODB.Connection")
strDsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("Access/Elever.mdb")
Conn.Open strDsn
%>
end sub

sub LukDBForbindelse
<%
Conn.Close
Set Conn = Nothing
%>
end sub
</head>

<body>
call OpretDBForbindelse
<%
strSQL="SELECT * FROM elev"
set rs = Conn.Execute(strSQL)
...
%>
call Lukforbindelse

/peer

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Peter Lykkegaard (19-02-2007)
Kommentar
Fra : Peter Lykkegaard


Dato : 19-02-07 13:48

Peer Jespersen wrote:

>> fra Set Conn og sluttende med den linje der fejler.
>
Du skal have al din asp kode indenfor markeringerne

<html>
<body>
<!-- HTML kode her -->
<%
' Asp (VBScript) kode her
%>
<!-- mere HTML -->
</html>
</body>

A la dette (forudsat mit noget "rustne" asp kendskab slår til)
---------------------------------

<%
Open Explicit
sub OpretDBForbindelse
Set Conn = Server.CreateObject("ADODB.Connection")
strDsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("Access/Elever.mdb")
Conn.Open strDsn
end sub

sub LukDBForbindelse
Conn.Close
Set Conn = Nothing
end sub
%>
</head>

<body>
<%
call OpretDBForbindelse
strSQL="SELECT * FROM elev"
set rs = Conn.Execute(strSQL)
...
call Lukforbindelse
%>
...

Brug af metoder/funktioner i ASP
http://www.4guysfromrolla.com/webtech/faq/Beginner/faq5.shtml

Database connectivity
http://www.4guysfromrolla.com/webtech/faq/faqtoc.shtml#Databases

hth/Peter

--
Hi! I'm a .signature *virus*!
Copy me into your ~/.signature to help me spread!



Jens Gyldenkærne Cla~ (19-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-02-07 13:35

Peer Jespersen skrev:

> Jeg bruger normal ikke Open Explicit, og der er opstår ikke nye
> fejlmeddelelser selv om jeg gør det.

Det hedder Option Explicit - ikke Open Explicit. Det tragikomiske
er at et af formålene med at anvende Option Explicit er at gøre det
lettere at fange stavefejl - men det virker ikke hvis det er Option
Explicit man skriver forkert.


> Open Explicit
> sub OpretDBForbindelse
> <%

Hvad laver det asp-tegn dér? Option Explicit og sub
OpretDBForbindelse er også asp-kode, og skal være inde i asp-
klammer som resten af din kode.

Dine procedurer er slet ikke procedurer, fordi du har sub og end
sub uden for asp-klammerne. Dermed læses koden sekventielt.

Først åbner du altså forbindelsen:

> Set Conn = Server.CreateObject("ADODB.Connection")
> strDsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
> Server.MapPath("Access/Elever.mdb")
> Conn.Open strDsn

- og så lukker du den igen:

> Conn.Close
> Set Conn = Nothing

Her har du dermed ingen brugbar forbindelse.


> call OpretDBForbindelse

Kaldet herover ligger også uden for asp-klammerne og bliver ikke
behandlet af asp-parseren.

> <%
> strSQL="SELECT * FROM elev"
> set rs = Conn.Execute(strSQL)

- så derfor er der ikke noget mærkeligt i at dit kald herover
fejler.


Prøv at læse starten af asp-tutorialen - fx
<http://www.html.dk/tutorials/asp/lektion3.asp> - for at få styr på
hvad der skal være inden for <% - %>-markeringen og hvad der skal
være uden for.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Jens Gyldenkærne Cla~ (19-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-02-07 14:00

Peter Lykkegaard skrev:

> <%
> Open Explicit

Som nævnt i svaret til Peer er det Option Explicit, ikke Open.

Og det betyder så samtidig at man skal erklære ("dimme") alle
variable før de bruges. Når der som her anvendes procedurer med
objekter der skal tilgås uden for proceduren (conn), skal det
erklæres globalt:

Dim conn, rs, strSQL

DSN-variablen skal kun anvendes inde i OpretDBForbindelse, derfor
bør den erklæres lokalt:

> sub OpretDBForbindelse
   
   Dim strDSN

> Set Conn = Server.CreateObject("ADODB.Connection")
> strDsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
> Server.MapPath("Access/Elever.mdb")
> Conn.Open strDsn
> end sub

Resten skulle køre fint nok.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Peter Lykkegaard (19-02-2007)
Kommentar
Fra : Peter Lykkegaard


Dato : 19-02-07 14:07

Jens Gyldenkærne Clausen wrote:


>> Open Explicit
>
> Som nævnt i svaret til Peer er det Option Explicit, ikke Open.
>
Ja den missede jeg - det var også med forbehold :)

- Peter

--
Hi! I'm a .signature *virus*!
Copy me into your ~/.signature to help me spread!



Lasse Skovsager (02-03-2007)
Kommentar
Fra : Lasse Skovsager


Dato : 02-03-07 23:04

Peer Jespersen wrote:
> I min SQL-sætning:
>
> strSQL="SELECT * FROM master"
> rs = Conn.Execute(strSQL)
> do
> Response.Write("FNavn")


skal den ikke være Response.Write rs("FNavn")

??


--
Lasse Skovsager
www.hartr.dk - vikingegruppe i Hardsyssel


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste