/ 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
når EOF så gør noget!
Fra : Henrik Overballe


Dato : 13-11-02 20:31

Hej NG

Jeg har en liste, hvori jeg ønsker at gøre noget ved det sidste udtræk.
F.eks. ved at gøre det sidste utræk fed. Hvorfor gør jeg dette?

Jeg skal vel lave en løkke med DO UNTIL xx.EOF, men hva så når jeg skal
trække det sidste utræk ud?

--
De venligste hilsner/
Best Regards

Henrik Overballe




 
 
Jørgen Müller (13-11-2002)
Kommentar
Fra : Jørgen Müller


Dato : 13-11-02 20:40

Hej Henrik

Kan du ikke bruge rs.RecordCount -1

--
Med Venlig Hilsen

Jørgen Müller



Jørgen Müller (13-11-2002)
Kommentar
Fra : Jørgen Müller


Dato : 13-11-02 21:00

Hej igen

Svaret var måske lidt kort så prøv med

Do While Not rs.eof
If Not rs.RecordCount -1 Then
Response.Write "dine data"
Else
Response.Write "<b> dine data </b>"
End If
Loop

obs frit fra hukommelsen.

--
Med Venlig Hilsen

Jørgen Müller



Henrik Overballe (13-11-2002)
Kommentar
Fra : Henrik Overballe


Dato : 13-11-02 21:05

Hej Jørgen

Tak for det hurtige svar

> Kan du ikke bruge rs.RecordCount -1

Er dog ikk med på hvordan jeg skal gøre det?

--
De venligste hilsner/
Best Regards

Henrik Overballe



Jakob Andersen (15-11-2002)
Kommentar
Fra : Jakob Andersen


Dato : 15-11-02 00:38

"Henrik Overballe" <overballe@duoweb.dk> wrote
> Er dog ikk med på hvordan jeg skal gøre det?

Har du fundet ud af det Henrik, jeg sidder nemlig lige of kommer i tanke om
en lidt lettere måde at gøre det på, du kan bruge GetRows funktionen på
Recordset objektet og dermed får du et 2-dimensionelt array med alle
posterne i, herefter kan du så lave noget ala nedenstående:

mitArray = objRS.GetRows()
For i = 0 to (UBound(mitArray, 2) -1)
.... Udskriv post med:
mitArray( i, feltindex )
Next

Udskriv sidste post med:

mitArray( UBound(mitArray,2), feltindex )

--
Jakob Andersen



Anders Lund (13-11-2002)
Kommentar
Fra : Anders Lund


Dato : 13-11-02 21:42

"Henrik Overballe" <overballe@duoweb.dk> skrev i en meddelelse
news:3dd2a86d$0$63878$edfadb0f@dread15.news.tele.dk...
> Hej NG
> Jeg skal vel lave en løkke med DO UNTIL xx.EOF, men hva så når jeg skal
> trække det sidste utræk ud?



Det er kommer an på hvilken connection til din database du bruger (ADO eller
ODBC tror jeg) om du kan bruge RecordCount. Du kan evt bruge en anden
løsning:
dbconn.execute(sql,count)
altså er andet parameter i execute funktionen en variabel der kommer til at
indeholde antal poster i dit udtræk.

Du da gøre sådan
for i = 0 to count
if i = (count-1) then 'hvis du er ved sidste post
response.write "<strong>etellerandet" & rs("og_noget_database") &
"</strong>"
else
response.write "etellerandet" & rs("og_noget_database")
rs.movenext
end if
next

Det er frit fra hukommelsen, så det kan godt være at det ikke virker.


Der er også en anden løsning hvor du kan bruge movenext og moveprevious fx
Dette trjekker den næste post i rækken (hvis den næste post "er" eof, vil
den nuværende være den sidste), men den bliver på den nuværende post

rs.movenext
if rs.eof then
'Denne post den sidste
end if
rs.moveprevious





--
Mvh
Anders Lund
Anders@zaimGED.dk
Fjern geden fra min signatur!



Jakob Andersen (13-11-2002)
Kommentar
Fra : Jakob Andersen


Dato : 13-11-02 22:36

"Anders Lund" <Anders@zaimGED.dk> wrote
> Det er kommer an på hvilken connection til din database du bruger (ADO
eller
> ODBC tror jeg) om du kan bruge RecordCount.

Nej, det har slet ikke noget med forbindelsen at gøre. Det kommer an på dit
Recordsets Cursortype, normalt vil man bruge en ForwardOnly Cursor, dvs. en
cursor der KUN kan køre fremad og heller ikke ved hvor langt der er til
slutningen af recordsettet derfor kan en recordset der gør brug af
forwardonly cursoren ikke vide hvor mange poster der er og man kan heller
ikke hoppe rundt i recordsettet.

> Du kan evt bruge en anden
> løsning:
> dbconn.execute(sql,count)
> altså er andet parameter i execute funktionen en variabel der kommer til
at
> indeholde antal poster i dit udtræk.

Jeg tror der er noget du har misforstået her, ifølge dokumentationen[1] kan
man ganske vist sende en variabel med som parameter til Execute metoden på
Connection objektet men denne parameter returnerer ikke antal poster der
returneres. Denne returnerer antal poster der er _ændret_ dvs. opdateret,
slettet eller indsat vha. forespørgslen.

Man kan dog løse problemet ved at sende 2 SQL sætninger til databasen altså
f.eks.:

SELECT COUNT(*) FROM <table>;SELECT <fieldlist> FROM <table>;

Og herefter kan man så først få fat i antallet og herefter posterne vha.
NextRecordset[2] metoden på Recordset objektet. Dog er jeg ikke sikker på om
man kan få lov til at sende flere statements afsted til Access på denne
måde.

Den sidste mulighed man har er den letteste men samtidig den mest fyfy pga.
performance, den resulterer nemlig i at man for hver enkel post hiver
antallet ud af databasen, det kan man f.eks. gøre ved hjælp af denne SQL
sætning:

SELECT (SELECT COUNT(*) FROM <table>) AS Antal, <fieldlist> FROM <table>;

På denne måde har man adgang til antallet af poster i feltet antal, dog er
dette som sagt performance mæssigt en dårlig måde at gøre det på, dog er jeg
ikke sikker på hvor godt forespørgslen optimeres så om COUNT() funktionen
køres for hver række eller blot en enkelt gang skal jeg ikke skulle sige.

[1]:
<http://msdn.microsoft.com/library/en-us/ado270/htm/mdmthcnnexecute.asp>
[2]: <http://msdn.microsoft.com/library/en-us/ado270/htm/mdmthnextrec.asp>
--
Jakob Andersen



Anders Lund (13-11-2002)
Kommentar
Fra : Anders Lund


Dato : 13-11-02 23:09

"Jakob Andersen" <jakob@effectus.dk> skrev i en meddelelse
news:aqugjt$1tmn$1@news.cybercity.dk...

> Jeg tror der er noget du har misforstået her, ifølge dokumentationen[1]
kan
> man ganske vist sende en variabel med som parameter til Execute metoden på
> Connection objektet men denne parameter returnerer ikke antal poster der
> returneres. Denne returnerer antal poster der er _ændret_ dvs. opdateret,
> slettet eller indsat vha. forespørgslen.


Jeg ved godt at den normalt giver ændrede poster, men i alle de setups jeg
har brugt giver den også antal poster i selects.
Kik på overclocking.dk alle de steder det står noget om antallet af poster,
er denne løsning brugt.

--
Mvh
Anders Lund
Anders@zaimGED.dk
Fjern geden fra min signatur!



Anders Lund (14-11-2002)
Kommentar
Fra : Anders Lund


Dato : 14-11-02 13:18


"Anders Lund" <Anders@zaimGED.dk> skrev i en meddelelse
news:aquiij$hqo$1@sunsite.dk...
> Jeg ved godt at den normalt giver ændrede poster, men i alle de setups jeg
> har brugt giver den også antal poster i selects.

Her må jeg hellere rette mig selv. Vi har lige snakket om dette i en anden
tråd, her blev vi vist enige om at det ikke er en general ting, men noget
speciel man man bruge i forbindelse med mysqls odbc driver. Altså hvis I
brger mysql kan I fint bruge min ide, eller må du nok finde en anden
løsning.

--
Mvh
Anders Lund
Anders@zaimGED.dk
Fjern geden fra min signatur!



Jens Gyldenkærne Cla~ (14-11-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-11-02 00:27

Anders Lund skrev:

>> Denne returnerer antal poster der er _ændret_ dvs. opdateret,
>> slettet eller indsat vha. forespørgslen.

> Jeg ved godt at den normalt giver ændrede poster, men i alle
> de setups jeg har brugt giver den også antal poster i selects.

RecordsAffected - som egenskaben hedder, betyder ikke "ændrede
poster", men blot berørte poster - og det er uanset hvilken
forespørgselstype der er tale om. I en select vil det være det
returnerede antal poster.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Jakob Andersen (14-11-2002)
Kommentar
Fra : Jakob Andersen


Dato : 14-11-02 00:41

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote
> RecordsAffected - som egenskaben hedder, betyder ikke "ændrede
> poster", men blot berørte poster - og det er uanset hvilken
> forespørgselstype der er tale om. I en select vil det være det
> returnerede antal poster.

Ovenstående er ikke korrekt, nedenstående er snippet direkte fra ADO
dokumentationen:

[udsnit start]
RecordsAffected
Optional. A Long variable to which the provider returns the number of
records that the operation affected. The RecordsAffected parameter applies
only for action queries or stored procedures. RecordsAffected does not
return the number of records returned by a result-returning query or stored
procedure.
[udsnit slut]

--
Jakob Andersen



Jens Gyldenkærne Cla~ (14-11-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-11-02 00:39

Jens Gyldenkærne Clausen skrev:

> RecordsAffected - som egenskaben hedder, betyder ikke "ændrede
> poster", men blot berørte poster - og det er uanset hvilken
> forespørgselstype der er tale om. I en select vil det være det
> returnerede antal poster.

Blah - noget sludder jeg fik skrevet, beklager. Iflg. MS-
dokumentationen er det - som Jakob Andersen m.fl. har hævdet - kun
poster der er berørt af handlingsforespørgsler (insert, delete,
update). Jeg har rodet forskellige ting sammen - godnat .
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Jens Gyldenkærne Cla~ (14-11-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-11-02 10:29

Jens Gyldenkærne Clausen skrev:

> Jeg har rodet forskellige ting sammen

For nu lige at fortsætte i spinaten - jeg har forvekslet
RecordsAffected med det svar som MSSQL-server leverer ved hver
forespørgsel i Query Analyzer: "(xxx row(s) affected)".
Det kommer uanset om der er tale om select, insert, update eller
delete.

Beklager misforståelsen igen.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jonas Lumby (15-11-2002)
Kommentar
Fra : Jonas Lumby


Dato : 15-11-02 00:33

Hejsa

Den løsning som jeg ville bruge er heller ikke performance-mæssigt særlig
god, men den virker. Du bruger simpelthen variabler til at gemme de data fra
databasen som der skal arbejdes videre med. Derefter if EOF udskriver du i
fed eller hvad du nu vil, ellers udskriver du normalt og fortsætter i
Loopet.
Dermed skal du hente fra databasen hver gang og ligge dataene i variabler og
derefter udskrive dem, det er lidt dobbeltarbejde, men det medfører at du
kan vente med at udskrive til du har tjekket om det er den sidste post...

Håber det hjalp
Jonas

"Henrik Overballe" <overballe@duoweb.dk> wrote in message
news:3dd2a86d$0$63878$edfadb0f@dread15.news.tele.dk...
> Hej NG
>
> Jeg har en liste, hvori jeg ønsker at gøre noget ved det sidste udtræk.
> F.eks. ved at gøre det sidste utræk fed. Hvorfor gør jeg dette?
>
> Jeg skal vel lave en løkke med DO UNTIL xx.EOF, men hva så når jeg skal
> trække det sidste utræk ud?
>
> --
> De venligste hilsner/
> Best Regards
>
> Henrik Overballe
>
>
>



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

Månedens bedste
Årets bedste
Sidste års bedste