Roter korrekt i ResultSet ved hvert sideskift
Jeg har noget kode der næsten virker! Der er bare én fejl som jeg ikke kan finde. Jeg har skrevet en længere forklaring af problemet med eksempler for at lette forståelsen af problemet. Læs venligst det hel igennem :o)Jeg har en tabel med x antal bannere der skal udskrives lodret y stk af gangen. Det er vigtigt at bannere skifter plads ved hver sidevisning (på tværs af forskellige brugere), så alle bannere bliver vist på hver plads lige mange gange.
Derfor hvis der fx. er 2 bannere (a,b) i tabellen, og der skal vises 2 bannere pr. sidevisning skal de vises i denne rækkefølge:
1. sidevisning
a,b
2. sidevisning
b,a
3. sidevisning
a,b
4. sidevisning
b,a
...og så videre. Det kan selvfølgelig blive mere "avanceret" når der er flere bannere i tabellen end jeg ønsker at vise pr. sidevisning, men det skulle koden gerne være kold overfor. Den skal bare flytte rundt i resultset'et og vise dem hvis tur der er på den givne plads.
Det sker bare ikke med det kode jeg har lavet, min kode ligesom fryser fast en enkelt gang, inden den fortsætter, så den udskriver sådan her:
*** EKSEMPEL MED 2 TIL UDSKRIVNING OG 2 BANNERE I ALT ***
1. sidevisning
a,b - OK!
2. sidevisning
b,a - OK!
3. sidevisning
b,a - FEJL skulle være a,b!
4. sidevisning
a,6 - FEJL skulle være b,a!
*********************************************************
*** EKSEMPEL MED 3 TIL UDSKRIVNING OG 3 BANNERE I ALT ***
1. sidevisning
1,2,3 - OK!
2. sidevisning
3,1,2 - OK!
3. sidevisning
2,3,1 - OK!
4. sidevisning
1,2,3 - OK!
5. sidevisning
1,2,3 - FEJL - skulle være 3,1,2!
6. sidevisning
3,1,2 - FEJL - skulle være 2,3,1!
*********************************************************
Når den har været igennem, viser den altså den samme kombination igen, inden den fortsætter. Jeg har selv makket som en gal med det, men kan bare ikke finde ud af hvorfor. Kort sagt jeg er helt tøt for ideér til løsningen af mit problem!
Det kode jeg har ser ud som nedenstående. Jeg bruger "Application", for at sikre at det sker på tværs af alle sidevisninger, men i mine test VED jeg at jeg er ene om at lave sidevisninger, så det er ikke det der gør at jeg får forkert resultat.
****************
'intAntalannoncerTilUdskrivning = det antal der skal udskrives pr. sidevisning
'intIalt = det totale antal bannere i databasen
'strHusk = noget unikt
for n = 1 to intAntalannoncerTilUdskrivning
if n = 1 then
'Start ved det banner vi er kommet til...
for i = 1 to Application(strHusk) - 1
RS.MoveNext
if RS.EOF then
RS.MoveFirst
end if
next
else
RS.MoveNext
if RS.EOF then
RS.MoveFirst
end if
end if
Application.Lock
Application(strHusk) = Application(strHusk)+1
if Application(strHusk) > intIalt then
Application(strHusk) = 0
end if
Application.Unlock
Response.write "skriv banneret ud til skærmen"
next
********************
Jeg ved ikke, om det kan være noget med at jeg ikke tager korrekt højde for og antallet af bannere og antallet der skal vises pr. side, eller om det er noget lige/ulige der spiller ind.
Nogen der kan gennemskue hvorfor det ikke virker, og rette det til, så det virker uanset antal bannere i tabellen og uanset antallet jeg ønsker at udskrives pr. sidevisning?
