/ 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
LOOP
Fra : Gert Simonsen


Dato : 29-01-04 17:04

Hejsa

Jeg kører en loop:

<%Do While Not rs.EOF%>

kode....

<% Rs.MoveNext Loop%>

Det kører jo helt fint, indtil der ikke er flere records i databasen, så
kommer fejlen:

Either BOF or EOF is True, or the current record has been deleted. Requested
operation requires a current record.

Og det er jo klart......
Men hvordan kommer jeg denne fejl til livs, da jeg har flere ting på denne
side som jeg gerne vil vise?

Hilsen
Gert Simonsen



 
 
Jørn Andersen (29-01-2004)
Kommentar
Fra : Jørn Andersen


Dato : 29-01-04 19:36

On Thu, 29 Jan 2004 17:04:02 +0100, "Gert Simonsen"
<gert@FJERNESmallin.dk> wrote:

>Jeg kører en loop:
>
><%Do While Not rs.EOF%>
>
>kode....
>
><% Rs.MoveNext Loop%>

De sidste skal være på hver sin linie:
Rs.MoveNext
Loop
-men det er sikkert bare en copy-paste fejl

>Det kører jo helt fint, indtil der ikke er flere records i databasen, så
>kommer fejlen:

Hvad mener du med "indtil der ikke er flere records i databasen"?
1) At du er løbet gennem hele recordsettet og er nået forbi den sidste
eller
2) At der ikke var nogle records overhovedet i den forspørgsel, du
udførte

>Either BOF or EOF is True, or the current record has been deleted. Requested
>operation requires a current record.
>
>Og det er jo klart......

Ja, det er for så vidt klart nok, men hvordan du overhovedet kan få
denne fejl *inde i loopen* er *ikke* klart.

>Men hvordan kommer jeg denne fejl til livs, da jeg har flere ting på denne
>side som jeg gerne vil vise?

Ikke helt forstået - du vil vel få vist alt det på siden, som ligger
uden for loopen?

Jeg plejer at strukturere det nogenlunde således:

If objRs.Eof Then
' Skriv evt. en fejlmeddelelse, hvis der er behov for det
Else
Response.Write "<table>"
' + hvad der er ellers skal udskrives *inden* loopen
Do While Not rs.EOF
' Udskriv det der skal udskrives *i* loopen
objRs.MoveNext
Loop
Response.Write "</table>"
' + hvad der er ellers skal udskrives *efter* loopen
End If

Er det også sådan du gør?
Hvis ja, *hvor* er det så du får fejlmeddelelsen?
Hvis nej, hvad er den væsentligste forskel?


Good luck!

--
Jørn Andersen,
Brønshøj

Gert Simonsen (31-01-2004)
Kommentar
Fra : Gert Simonsen


Dato : 31-01-04 16:58


"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:s2ki1094vg5cm8ahcus13pfdjheg8k2efb@4ax.com...
> On Thu, 29 Jan 2004 17:04:02 +0100, "Gert Simonsen"
> <gert@FJERNESmallin.dk> wrote:
>
> Jeg plejer at strukturere det nogenlunde således:
>
> If objRs.Eof Then
> ' Skriv evt. en fejlmeddelelse, hvis der er behov for det
> Else
> Response.Write "<table>"
> ' + hvad der er ellers skal udskrives *inden* loopen
> Do While Not rs.EOF
> ' Udskriv det der skal udskrives *i* loopen
> objRs.MoveNext
> Loop
> Response.Write "</table>"
> ' + hvad der er ellers skal udskrives *efter* loopen
> End If
>
> Er det også sådan du gør?
> Hvis ja, *hvor* er det så du får fejlmeddelelsen?
> Hvis nej, hvad er den væsentligste forskel?
>
>
> Good luck!
>
> --
> Jørn Andersen,
> Brønshøj
Hej Jørn

Jeg er bestemt ikke nogen "ørn" til ASP, men jeg har alligevel kastet mig ud
i det....
Jeg har nedenstående kode i filen. Men hvor er det lige jeg skal sætte dit
forslag ind?
Jeg har forsøgt, men stadig:
Either BOF or EOF is True, or the current record has been deleted. Requested
operation requires a current record.
Plaese help...



<!--#include file="Connections/connbagterplogbog.asp" -->
<%
dim adoCn
dim strSQL
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strConn '"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
server.MapPath("fpdb/bagterplogbog.mdb")

dim rs
strSQL = "SELECT * FROM mail WHERE mailtil
like'%"&Session("MM_Username")&"%'order by maildato DESC"
Set rs = Conn.Execute(strSQL)
Conn.Execute (strSQL)

%>




<%
DO WHILE NOT rs.EOF
%>

Det der skal udskrives i loopen.......

<%rs.MoveNext
Loop%>

Her noget der skal udskrives efter LOOPEN




<%
rs.Close
set rs = nothing

Cn.Close
set adoCn = nothing
%>



Jørn Andersen (31-01-2004)
Kommentar
Fra : Jørn Andersen


Dato : 31-01-04 17:39

On Sat, 31 Jan 2004 16:58:28 +0100, "Gert Simonsen"
<gert@FJERNESmallin.dk> wrote:

>Jeg er bestemt ikke nogen "ørn" til ASP, men jeg har alligevel kastet mig ud
>i det....

Selvfølgelig - det er den eneste måde at komme videre på :)

>Jeg har nedenstående kode i filen. Men hvor er det lige jeg skal sætte dit
>forslag ind?
>Jeg har forsøgt, men stadig:
>Either BOF or EOF is True, or the current record has been deleted. Requested
>operation requires a current record.

Hvilken linie opgiver den at der er fejl i?

>Plaese help...

Jeg tror måske dit problem er et andet:
<snip>

>strSQL = "SELECT * FROM mail WHERE mailtil
>like'%"&Session("MM_Username")&"%'order by maildato DESC"

Prøv her *midlertidigt* at indsætte disse to linier:
Response.Write strSql
Response.End
Så vil du få udskrevet din SQL-streng inklusive den indsatte variabel

Så vidt jeg kan se mangler der et mellemrum før ORDER BY - og du vil
også kunne se, om din Session-variabel rent faktisk indeholder det du
forventer.
Når det er rettet skal du (selvfølgelig) fjerne (eller udkommentere)
de to linier igen.

>Set rs = Conn.Execute(strSQL)

Fint nok, men hvad gør den næste linie:
>Conn.Execute (strSQL)
Fjerne den!

Resten ser så vidt jeg kan se udmærket ud - bortset fra:
<snip>
><%
>rs.Close
>set rs = nothing

OK hertil, men:

>Cn.Close
>set adoCn = nothing

Længere oppe kaldte du din Coonection for "Conn", nu kalder du den
hhv. "Cn" og "adoCn" - det giver ingen mening. Den skal have samme
navn hele vejen igennem.

Du behøver ikke følge mit forslag om at indsætte en
If rs.eof then
- du burde ikke få færre eller flere fejl af den grund.
Den gør det bare nemmere at indsætte en fejlmeddelelse det rigtige
sted, hvis recordsettet er tomt.
Undskyld forvirringen!

Good luck!

--
Jørn Andersen,
Brønshøj

Gert Simonsen (31-01-2004)
Kommentar
Fra : Gert Simonsen


Dato : 31-01-04 19:04


"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:0rln10dpm8svrlhbddl9l8pnpu5fdlhk11@4ax.com...
> On Sat, 31 Jan 2004 16:58:28 +0100, "Gert Simonsen"
> <gert@FJERNESmallin.dk> wrote:
>
> Hvilken linie opgiver den at der er fejl i?
linje 0

>
> Jeg tror måske dit problem er et andet:
> <snip>
>
> >strSQL = "SELECT * FROM mail WHERE mailtil
> >like'%"&Session("MM_Username")&"%'order by maildato DESC"
>
> Prøv her *midlertidigt* at indsætte disse to linier:
> Response.Write strSql
> Response.End
> Så vil du få udskrevet din SQL-streng inklusive den indsatte variabel
Så får jeg følgende:
SELECT * FROM mail WHERE mailtil like'%gert%' order by maildato DESC
og jeg er logget på som "gert" så den er jo god nok.....


> Så vidt jeg kan se mangler der et mellemrum før ORDER BY - og du vil
> også kunne se, om din Session-variabel rent faktisk indeholder det du
> forventer.
> Når det er rettet skal du (selvfølgelig) fjerne (eller udkommentere)
> de to linier igen.
Hermed gjort....
> >Set rs = Conn.Execute(strSQL)
>
> Fint nok, men hvad gør den næste linie:
> >Conn.Execute (strSQL)
> Fjerne den!
UPS...er fjernet!

> Resten ser så vidt jeg kan se udmærket ud - bortset fra:
> <snip>
> ><%
> >rs.Close
> >set rs = nothing
>
> OK hertil, men:
>
> >Cn.Close
> >set adoCn = nothing
>
> Længere oppe kaldte du din Coonection for "Conn", nu kalder du den
> hhv. "Cn" og "adoCn" - det giver ingen mening. Den skal have samme
> navn hele vejen igennem.
Nå ja......en copy-paste fejl

> Du behøver ikke følge mit forslag om at indsætte en
> If rs.eof then
> - du burde ikke få færre eller flere fejl af den grund.
> Den gør det bare nemmere at indsætte en fejlmeddelelse det rigtige
> sted, hvis recordsettet er tomt.
> Undskyld forvirringen!
Jeg vil netop gerne have indsat en "fejlmeddelelse" hvis recordsettet er
tomt: (din mailboks er tom)
Hvis der er "mail" er der som sagt ingen fejl, men man har muligheden for at
slette sine mails, og når så den sidste mail er slettet.......FEJL.....!!!!
Hele koden kan du se her: http://www.logporten.dk/test2/loop.txt
Nu er forvirringen hvis komplet!

Hilsen
Gert Simonsen



Jørn Andersen (01-02-2004)
Kommentar
Fra : Jørn Andersen


Dato : 01-02-04 00:39

On Sat, 31 Jan 2004 19:04:03 +0100, "Gert Simonsen"
<gert@FJERNESmallin.dk> wrote:

>> Hvilken linie opgiver den at der er fejl i?
>linje 0

Linje 0 - ? Den har jeg ikke hørt før.
Kan du ikke poste hele fejlmeddelelsen?

<snip>
>> >strSQL = "SELECT * FROM mail WHERE mailtil
>> >like'%"&Session("MM_Username")&"%'order by maildato DESC"
>>
>> Prøv her *midlertidigt* at indsætte disse to linier:
>> Response.Write strSql
>> Response.End
>> Så vil du få udskrevet din SQL-streng inklusive den indsatte variabel
>Så får jeg følgende:
>SELECT * FROM mail WHERE mailtil like'%gert%' order by maildato DESC
>og jeg er logget på som "gert" så den er jo god nok.....

Men mangler der ikke et mellemrum efter like - ?
Det er generelt en god idé at lave mellemrum mellem alle variabelnavne
og tegn som =, & etc.
LIKE '%" & Session("MM_Username") & "%' ORDER BY ...

<snip>
>> >Cn.Close
>> >set adoCn = nothing
>>
>> Længere oppe kaldte du din Coonection for "Conn", nu kalder du den
>> hhv. "Cn" og "adoCn" - det giver ingen mening. Den skal have samme
>> navn hele vejen igennem.
>Nå ja......en copy-paste fejl

- men er tilsyneldende endnu ikke rettet i linken neden for.

>Hvis der er "mail" er der som sagt ingen fejl, men man har muligheden for at
>slette sine mails, og når så den sidste mail er slettet.......FEJL.....!!!!
>Hele koden kan du se her: http://www.logporten.dk/test2/loop.txt
>Nu er forvirringen hvis komplet!

Ikke helt. Inden du starter din loop har du:
<h4><%=rs("mailtil")%>'s mail</h4>
- den vil give fejl, hvis recordsettet er tomt. [1]
Jeg ved ikke, om det er den du får fejl for?

Og det er i sådanne situationer, at det kan være smart at lave en If
til at styre fejl:
If rs.Eof Then
' Sorry, ingen meddelelser i dag
Else
' Mail til xyz
' (og så din sædavanlige Do While:
Do Whole Not rs.Eof
' Gør hvad der skal gøres
rs.MoveNext
Loop
End If

[1] I dette tilfælde er det i øvrigt helt unødvendigt at trække denne
værdi ud af recordsettet, da du i forvejen har den som variablen
Session("MM_Username")
*Hvis* du gør det, skal du huske at bruge rs.MoveFirst, inden du går
ind i at loope recordsettet.
Du vil så *muligvis* få en fejl, hvis du bruger en forkert cursor (men
den tid den sorg ...).

Prøv i øvrigt at tage et ekstra kig på din loop:
Den starter med en <table ...>, men der afsluttes ingen table inde i
loopen. Jeg vil tro, at du skal skrive <table ...> *før* loopen (men
*efter* 'Else' i If'en, hvis du anvender mit forslag.

Good luck!

--
Jørn Andersen,
Brønshøj

Gert Simonsen (01-02-2004)
Kommentar
Fra : Gert Simonsen


Dato : 01-02-04 09:41


"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:h4eo105cfmqqdaul37fpke1qcqfqajg4el@4ax.com...
> On Sat, 31 Jan 2004 19:04:03 +0100, "Gert Simonsen"
> <gert@FJERNESmallin.dk> wrote:
>
> >> Hvilken linie opgiver den at der er fejl i?
> >linje 0
>
> Linje 0 - ? Den har jeg ikke hørt før.
> Kan du ikke poste hele fejlmeddelelsen?

ADODB.Field error '80020009'

Either BOF or EOF is True, or the current record has been deleted. Requested
operation requires a current record.

/test2/mail.asp, line 0



Jørn Andersen (01-02-2004)
Kommentar
Fra : Jørn Andersen


Dato : 01-02-04 10:18

On Sun, 1 Feb 2004 09:41:21 +0100, "Gert Simonsen"
<gert@FJERNESmallin.dk> wrote:

>> Kan du ikke poste hele fejlmeddelelsen?
>
>ADODB.Field error '80020009'
>
>Either BOF or EOF is True, or the current record has been deleted. Requested
>operation requires a current record.
>
>/test2/mail.asp, line 0

Hmmm,
Hvad indeholder filen: connbagterplogbog.asp - ?

--
Jørn Andersen,
Brønshøj

Gert Simonsen (01-02-2004)
Kommentar
Fra : Gert Simonsen


Dato : 01-02-04 10:45


"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:rvgp10pl0niur37u6nblaopr66d6361e9u@4ax.com...
> On Sun, 1 Feb 2004 09:41:21 +0100, "Gert Simonsen"
> <gert@FJERNESmallin.dk> wrote:
>
> >> Kan du ikke poste hele fejlmeddelelsen?
> >
> >ADODB.Field error '80020009'
> >
> >Either BOF or EOF is True, or the current record has been deleted.
Requested
> >operation requires a current record.
> >
> >/test2/mail.asp, line 0
>
> Hmmm,
> Hvad indeholder filen: connbagterplogbog.asp - ?


<%
'Dim MM_connbagterplogbog_STRING
'MM_connbagterplogbog_STRING = "dsn=bagterplogbog;"
MM_connbagterplogbog_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & Server.MapPath("fpdb/bagterplogbog.mdb")
dim strConn
'strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\databaser\Document.mdb"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("fpdb/bagterplogbog.mdb")
'MM_connbagterplogbog_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & Server.MapPath("netlog/fpdb/bagterplogbog.mdb")
%>



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

Månedens bedste
Årets bedste
Sidste års bedste