Avatar billede bobbedude Nybegynder
20. januar 2003 - 08:03 Der er 9 kommentarer og
1 løsning

Hvis rs er tom ??

Jeg har dette som skriver 3 records ud random, problemet er bare at hvis der ikke er 3 records at skrive ud ja så går scriptet kold.

<%
end sub

set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = 3 ' adUseClient
rs.CursorType = 3 ' adOpenStatic
rs.Open "SELECT * FROM tilbudVare where priotet='A';", Connect, , , &H0001 ' adCmdText

if not rs.EOF or rs.BOF then
  randomize
  P1 = int(rs.RecordCount * rnd)
  rs.Move(P1)
  color=1
  VisInfo
  ' Næste
  rs.MoveFirst
  do
    P2 = int(rs.RecordCount * rnd)
  loop until (P1 <> P2)
  rs.Move(P2)
  color=2
  VisInfo
  ' Næste
  rs.MoveFirst
  do
    P3 = int(rs.RecordCount * rnd)
  loop until (P3 <> P2) and (P3 <> P1)
  rs.Move(P3)
color=3
  VisInfo
end if
%>
Avatar billede skeleton Nybegynder
20. januar 2003 - 08:43 #1
kan du ikke starte med at teste om rs er forskellig fra tom.
if rs <> "" Then
    ...... ..... ...
Else
    ...... ..... ... Her vil du så nok ikke lave noget!!
End If
Avatar billede 12tri Nybegynder
20. januar 2003 - 10:12 #2
eller du kan lave den omvendt af det skelton skriver
if rs = "" Then
HER skriver du hvad der skal ske hvis rs er tom
Else
Her indsætter du din nuværende kode
End If

/Morten
Avatar billede keysersoze Ekspert
20. januar 2003 - 10:15 #3
faktisk skal du før hver uskrivning bruge samme kode som du har i toppen;

"if not rs.EOF or rs.BOF then"
Avatar billede bobbedude Nybegynder
20. januar 2003 - 10:42 #4
Jeg prøvede at gøre sådan:

if not rs.EOF or rs.BOF then
  randomize
  P1 = int(rs.RecordCount * rnd)

 
  rs.Move(P1)
  color=1
 
  if not rs.EOF or rs.BOF then
 
  VisInfo
 
  end if
 
  ' Næste
  rs.MoveFirst
  do


  P2 = int(rs.RecordCount * rnd)
  loop until (P1 <> P2)
  rs.Move(P2)
  color=2
 
  if not rs.EOF or rs.BOF then
 
  VisInfo
 
  end if
 
  ' Næste
  rs.MoveFirst
  do


  P3 = int(rs.RecordCount * rnd)
  loop until (P3 <> P2) and (P3 <> P1)
  rs.Move(P3)
  color=3
 
  if not rs.EOF or rs.BOF then
 
  VisInfo
 
  end if
 
  ' Næste
 
end if


Men den går stadig ned hvis der ikke er 3 records den kan skrive ud.
Avatar billede bobbedude Nybegynder
20. januar 2003 - 12:42 #5
Hmm bare i ikke er faldet i søvn...
Avatar billede eagleeye Praktikant
20. januar 2003 - 13:50 #6
Grunden til det er at du vil havde 3 forsklellige records og hvis der ikke er 3 record så vil du ende i et uendeligt loop ved denne linie:

loop until (P3 <> P2) and (P3 <> P1)


Så der skal tjekkes for om der er flere end 3 records før du udføre det script som finde de 3..

Hvis der er mindre end 3 records skal de så vises i random række følge?? Det vil kun være et spørgsmål hvis der er 2 record skal de så vises ranmdom eller er det Ok de altid vises i samme række følge?
Avatar billede eagleeye Praktikant
20. januar 2003 - 13:52 #7
Eks hvis de to godt må vise på ens hver gang.:


if (not rs.EOF or rs.BOF) and rs.RecordCount >= 3 then
  randomize
  P1 = int(rs.RecordCount * rnd)
  rs.Move(P1)
  color=1
  VisInfo
  ' Næste
  rs.MoveFirst
  do
    P2 = int(rs.RecordCount * rnd)
  loop until (P1 <> P2)
  rs.Move(P2)
  color=2
  VisInfo
  ' Næste
  rs.MoveFirst
  do
    P3 = int(rs.RecordCount * rnd)
  loop until (P3 <> P2) and (P3 <> P1)
  rs.Move(P3)
color=3
  VisInfo
else
  'Enten tom recordset eller mindre end 3 records
  do while not rs.EOF
    VisInfo
    rs.Movenext
  loop
end if
%>
Avatar billede bobbedude Nybegynder
20. januar 2003 - 14:01 #8
eagleeye >> Det virker 99.99%
hvis der kun er eks. 2 records så kan jeg ikke få fat på variablen color men er der 3 eller flere er det ikke et problem.
Avatar billede eagleeye Praktikant
20. januar 2003 - 16:50 #9
Ups har først set din kommentar nu.. Skal color være 1,2 så ?
Så kan det gøres sådan her:


else
  'Enten tom recordset eller mindre end 3 records
  color=1
  do while not rs.EOF
    VisInfo
    rs.Movenext
    color=color+1
  loop
end if
Avatar billede bobbedude Nybegynder
21. januar 2003 - 07:18 #10
Genialt eagleeye >> Hvem der havde øjne som dig *LOL* Tak for hjælpen.
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