Avatar billede mini-me Nybegynder
04. januar 2004 - 19:40 Der er 44 kommentarer og
2 løsninger

Hvordan finder jeg sidste recordset?

Hej Eksperter,

Jeg har sat og nosset lidt med noget kode, men kan ikke rigtig få det til at virke. Jeg har et database udtræk, men hvordan finder jeg ud af hvornår jeg når den sidste post i udtrækket?

min kode lign. dether:

while not rs.bof or rs.eof

  if rs.eof = true then
  response.write("Sidste post")
  end if

rs.movenext
wend
Avatar billede thesurfer Nybegynder
04. januar 2004 - 19:46 #1
Skal du have fat i indholdet af den sidste post?
dim tmp
tmp = ""
while not rs.bof or rs.eof

  if rs.eof = true then
  tmp = ("Sidste post")
  end if

rs.movenext
wend

response.write "Sidste post indholdet: " & tmp

Eller måske en "select top 1 from TABELNAVN Desc" (eller noget i den stil)
Henter den sidst indsatte post..
Avatar billede mini-me Nybegynder
04. januar 2004 - 19:48 #2
øhhh nej det er ikke lige det jeg leder efter... for vil gerne trække resten af mine data ud stadig :-)
while not rs.bof or rs.eof

  if rs.eof = true then
  response.write("Sidste post")
  end if
 
  response.write(rs("blabla"))

rs.movenext
wend
Avatar billede tfa_dk Nybegynder
04. januar 2004 - 19:48 #3
Kun en lille bemærkning, ikke en konfimering af resten.

while not rs.bof or rs.eof

  if rs.eof = true then
    response.write("Sidste post")
  else ' movenext skal ikke kaldes efter eof
    rs.movenext
  end if
wend
Avatar billede mini-me Nybegynder
04. januar 2004 - 19:51 #4
Hmmm...
Avatar billede mini-me Nybegynder
04. januar 2004 - 19:53 #5
tfa: Hvis jeg gør det på din måde får jeg en helveds masse dobbelt kode... ville er blot en lille udskiftning af et billede der skal ske.
Avatar billede thesurfer Nybegynder
04. januar 2004 - 19:54 #6
Så må det være:

while not rs.bof or rs.eof
  if rs.eof = true then
    response.write("Sidste post") ' den sidste post
  else
    response.write(rs("blabla")) ' ikke den sidste post
    rs.movenext
  end if
wend


hmm.. hvad mener du?:
"tfa: Hvis jeg gør det på din måde får jeg en helveds masse dobbelt kode"
Avatar billede squashguy Nybegynder
04. januar 2004 - 19:57 #7
do while not (rs.bof or rs.eof)
  '...
  rs.movenext

  if rs.bof or rs.eof then
    'sidste post
  else
    ' ikke sidste post
  end if
loop
Avatar billede tfa_dk Nybegynder
04. januar 2004 - 19:58 #8
Kan du så ikke gøre det uden for while loop'et, det skal jo kun gælde for den sidste?
while not rs.bof or rs.eof
    gør en masse
    rs.movenext
wend
gør det for der kun skal gøres for den sidste
Avatar billede mini-me Nybegynder
04. januar 2004 - 19:59 #9
Jeg mener blot at hvis jeg gør det på den her måde:
while not rs.bof or rs.eof
' En masse HTML kode

  if rs.eof = true then
    response.write("<img src="2.gif">")
    ' Her skal så kopieres alt mit html kode ind de 180 linier...
    ' temmelig meget dbl. kode for at skifte 1 billede...!
else
    response.write("<img src="1.gif">")
    ' resten af alt det html kode jeg har lavet ca 180 linier
rs.movenext
  end if
wend
Avatar billede mini-me Nybegynder
04. januar 2004 - 20:01 #10
TFA: Det er kun 1 billede der skal skiftes... og vil gerne undgaa dbl. kode da der er temmelig meget af det, og finder det ikke som en optimal løsning at skulle rette html kode til 2 x!
Avatar billede thesurfer Nybegynder
04. januar 2004 - 20:01 #11
Hvad så med?:

while not rs.bof or rs.eof
' En masse HTML kode

  if rs.eof = true then
    response.write("<img src="2.gif">")
    ' Her skal så kopieres alt mit html kode ind de 180 linier...
    ' temmelig meget dbl. kode for at skifte 1 billede...!
else
    response.write("<img src="1.gif">")
%>
    ' resten af alt det html kode jeg har lavet ca 180 linier
<%
rs.movenext
  end if
wend
Avatar billede squashguy Nybegynder
04. januar 2004 - 20:02 #12
surfer.. duer ikke, på det sted i koden vil rs.eof aldrig være true..
Avatar billede mini-me Nybegynder
04. januar 2004 - 20:04 #13
the surfer.. det ændre jo ikke på det... skal jo stadig have de 180 koder ind 2 steder... fordi mit end if kommer så langt nede...

burde være såen her

while not rs.bof or rs.eof
' En masse HTML kode

  if rs.eof = true then
    response.write("<img src="2.gif">")
  else
    response.write("<img src="1.gif">")
  end if
%>
    ' resten af alt det html kode jeg har lavet ca 180 linier
<%
rs.movenext
wend
Avatar billede mini-me Nybegynder
04. januar 2004 - 20:13 #14
kan dette ikke gøre trickket?

while not rs.bof or rs.eof

  if rs.eof = true then
    tmpVar = "sidstepost"
  else
        if tmpVar <> "" then
          response.write("billede 1")
        else
          response.write("billede 2")
        end if   

    rs.movenext
  end if
wend
Avatar billede thesurfer Nybegynder
04. januar 2004 - 20:19 #15
Har du sat tmpVar til noget? Hvis ikke er den jo ""..
Hvis rs.eos = False, checker den om tmpVar <> "", hvilket den er. Altså vises billede 2.

Når rs.eof = True, sættes tmpVar til "sidstepost", og den hopper ud af loopen.
med andre ord: billede 1 vises aldrig?
Avatar billede mini-me Nybegynder
04. januar 2004 - 20:24 #16
hmm det virker ikke ihvertfald :)
Avatar billede mini-me Nybegynder
04. januar 2004 - 20:37 #17
Får bare en timeout...
Avatar billede squashguy Nybegynder
04. januar 2004 - 20:41 #18
har du prøvet hvad jeg kom med tidligere? det burde virke..

do while not (rs.bof or rs.eof)
  'en masse HTML
  rs.movenext

  if rs.bof or rs.eof then
    response.write("billed 1")
  else
    response.write("billed 2")
  end if
loop
Avatar billede mini-me Nybegynder
04. januar 2004 - 20:47 #19
det virker hellere ikke..
Avatar billede mini-me Nybegynder
04. januar 2004 - 20:47 #20
error '80020009'
/admin/editor/index.asp, line 87
// linie 87 <% if rs("MasterPage") = True then %><img src="../images/home.gif"><% else %><img src="../images/page.gif"><%end if %>
Avatar billede eagleeye Praktikant
04. januar 2004 - 21:35 #21
Prøv at dele din if op sådan her:
<% if rs("MasterPage") = True then %>
  <img src="../images/home.gif">
<% else %>
  <img src="../images/page.gif">
<%end if %>
Avatar billede mini-me Nybegynder
04. januar 2004 - 21:37 #22
virker ikke... har hellere ikke haft problemer med den sætning før jeg benyttede mig af :

do while not (rs.bof or rs.eof)
  'en masse HTML
  rs.movenext

  if rs.bof or rs.eof then
    response.write("billed 1")
  else
    response.write("billed 2")
  end if
loop
Avatar billede eagleeye Praktikant
04. januar 2004 - 21:43 #23
men det var i den linje fejlen kom??
Prøv at tjekke det passer med antal af <% og %> og det ASP er inden for <% %>
Avatar billede eagleeye Praktikant
04. januar 2004 - 21:47 #24
denne her:
if rs.bof or rs.eof then

Kan du rette til dette da rs på dette sted aldrig kan lbive BOF:
if rs.eof then
Avatar billede mini-me Nybegynder
04. januar 2004 - 22:34 #25
virker stadig ikke...
Avatar billede eagleeye Praktikant
04. januar 2004 - 22:36 #26
Samme fejl??

Dette skulle virke:

do while not rs.eof
  'en masse HTML

  rs.movenext

  if rs.eof then
    response.write("billed 1")
  else
    response.write("billed 2")
  end if
loop
Avatar billede mini-me Nybegynder
04. januar 2004 - 23:05 #27
Nej desværre, det er som om at når den har kørt if sætningen så stopper den med at hente data fra recordsættet, derfor jeg får den fejl.
Avatar billede mini-me Nybegynder
04. januar 2004 - 23:07 #28
<%
while not rs.bof or rs.bof
%>
    <tr>
        <td><img src="../images/unfold.gif" width="9" height="9"></td>
        <%  if rs.eof then %>
        <td width="16"><img src="../images/_blank.gif"></td>
        <% else %>
        <td width="16"><img src="../images/_blankend.gif"></td>
        <% end if %>
        <td width="17"><% if rs("MasterPage") = "True" then %>
        <img src="../images/home.gif">
        <% else %>
        <img src="../images/page.gif">
        <%end if %></td>

<%
    rs.movenext
    wend

%>
Avatar billede eagleeye Praktikant
04. januar 2004 - 23:07 #29
Prøv at beskrive hvad der sker eller hvilken fejl kode du får?
Eller må du prøve at vise noget mere af det kode du bruger
Avatar billede eagleeye Praktikant
04. januar 2004 - 23:08 #30
Prøv sådan her så¨:


<%
while not rs.bof or rs.bof
%>
    <tr>
        <td><img src="../images/unfold.gif" width="9" height="9"></td>
        <td width="17"><% if rs("MasterPage") = "True" then %>
        <img src="../images/home.gif">
        <% else %>
        <img src="../images/page.gif">
        <%end if %></td>
<%
    rs.movenext
%>
        <%  if rs.eof then %>
        <td width="16"><img src="../images/_blank.gif"></td>
        <% else %>
        <td width="16"><img src="../images/_blankend.gif"></td>
        <% end if %>
<%
    wend

%>
Avatar billede mini-me Nybegynder
04. januar 2004 - 23:11 #31
Vender tilbage i morgen, er træt og har stadig tømmermænd og kan ikke overskue det :-)
Avatar billede mortenkjeldberg Nybegynder
05. januar 2004 - 12:06 #32
Man kan ikke tjekke på om rs.eof inde i en while løkke der gør det samme for den kommer aldrig derind som squashguy skriver. If-sætningen inde i løkken er overflødig. Hvis den skal gøre noget når rs.eof = true skal skal det gøres umiddelbart efter løkken.
Avatar billede mortenkjeldberg Nybegynder
05. januar 2004 - 12:08 #33
Hej igen

Hvis du åbner Resultsettet på denne måde :
SQLstm = “select xpto from table”
rs.Open SQLstm,1,3
rs.MoveLast

Kan du som det fremgår af eksemplet køre hen på det sidste element. Der erdesuden MoveFirst, MovePrevious og MoveNext til rådighed.

/Mort3n
Avatar billede tjaz Nybegynder
05. januar 2004 - 12:29 #34
kunne man ikke finde den sidste post vha. en count funktion ?

(Skal lige sige at jeg har ikke læst alle indlæg igennem, så det kan godt være mig der har misforstået noget).
Avatar billede eagleeye Praktikant
05. januar 2004 - 13:00 #35
mortenkjeldberg >> Sludder og vrøvl, naturligvis kan man det hvis man koder det rigtigt det kan gøres som squashguy og jeg har vist.
Avatar billede mortenkjeldberg Nybegynder
05. januar 2004 - 13:31 #36
Eagleeye >> Ja du bruger også bof i din while og ikke eof, det var de eksempler jeg hentydede til (som var de eneste jeg nåede til).
Avatar billede mortenkjeldberg Nybegynder
05. januar 2004 - 13:33 #37
eagleeye >> Jeg giver sådan set bare squashguy ret, hvis du læser min kommentar rigtigt.
Avatar billede eagleeye Praktikant
05. januar 2004 - 18:06 #38
Det lige meget om bof er med i loopet. Det er umiddelbart bare copy/paste af det koden mini-me har vist da BOF og EOF begge er sat hvis recordsetet er tomt.

Du skriver det ikke kan lade sig gøre, eller tager jeg meget fejl??

Hvis du læser tråden godt igennem istedet for at gætte så har squashguy også vist hvordan man kan lave det så det virker. Hvis man har if sætningen før .movenext virker det ikke, men ved at flytte den efter .movenext kan man tjekke på om man lige har udskrevet den sidste record.
Avatar billede tfa_dk Nybegynder
05. januar 2004 - 19:24 #39
Se lige disse 2 kommentarer

Kommentar: eagleeye
04/01-2004 21:35:36

Kommentar: mini-me
04/01-2004 21:37:22

Hvis man sætter disse to kommentarer sammen til et bliver det noget med:

do while not (rs.bof or rs.eof)
  'en masse HTML
  rs.movenext

  if rs.bof or rs.eof then
    <% if rs("MasterPage") = True then %>
      <img src="../images/home.gif">
    <% else %>
      <img src="../images/page.gif">
    <%end if %>
  else
    response.write("billed 2")
  end if

loop

Det skal gå galt da sætningen
<% if rs("MasterPage") = True then %>
refererer til rs som ikke mere findes da vi jo lige har haft rs.eof.
Avatar billede eagleeye Praktikant
06. januar 2004 - 09:40 #40
Se min kommentar 04/01-2004 23:08:49 det er mini-me's kode fra 04/01-2004 23:07:25. Det er lavet efter det princip som squashguy har vist alderrede 04/01-2004 19:57:22
Avatar billede mortenkjeldberg Nybegynder
06. januar 2004 - 10:31 #41
eagleeye >> Ikke for at dette skal være en chat. Jeg tror vi snakker forbi hinanden. Jeg har måske ikke udtrykt det klart nok, men hvad jeg mener er at:
Hvis man i while conditionen spørger efter "not rs.eof" giver det ikke mening at lave en if sætning der er true hvis man står med rs.eof . Den eneste grund til at jeg skrev det var for at jeg synes det så ud til at det var blevet overset da squashguy skrev det.

/Mort3n
Avatar billede mini-me Nybegynder
07. januar 2004 - 22:24 #42
Jeg har valgt at lade være med at benytte mig af dette, i denne omgang da jeg ikke kan få det til at virke. Men hvis alle smider et svar kan jeg fordele nogle points, for i har jo gjort en lille indstats ;-)
Avatar billede thesurfer Nybegynder
07. januar 2004 - 22:34 #43
Ingen points til mig, tak :)
Avatar billede eagleeye Praktikant
07. januar 2004 - 22:48 #44
mortenkjeldberg >> Du har tildels ret og jeg kan kun gentage hvad jeg har sagt før:  Hvis man har if sætningen før rs.movenext giver det ikke meget mening (det vi enige i). Hvis man flytter den efter rs.movenext kan man tjekke på om man lige har udskrevet den sidste record før man kommer ud af loopet.


mini-me>> har du prøvet dette koden fra min kommentar 04/01-2004 23:08:49 ??
Avatar billede mini-me Nybegynder
13. januar 2004 - 16:37 #45
Hej Drenge,

Jeg har ikke kunne få det til at  virke, men i skal have tak for jeres indsats så jer der vil have nogle point smid nogle svar :) Så fordeler jeg
Avatar billede eagleeye Praktikant
13. januar 2004 - 21:28 #46
Ok ;)
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