Avatar billede kimlarsen1978 Nybegynder
17. juli 2007 - 20:42 Der er 2 kommentarer og
1 løsning

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?
Avatar billede cpufan Juniormester
17. juli 2007 - 20:59 #1
har du prøvet at ændre denne:

  Application.Lock
    Application(strHusk) = Application(strHusk)+1
    if Application(strHusk) > intIalt then
      Application(strHusk) = 0
    end if
  Application.Unlock

til

  Application.Lock
    Application(strHusk) = Application(strHusk)+1
    if Application(strHusk) > intIalt then
      Application(strHusk) = 1
    end if
  Application.Unlock
Avatar billede kimlarsen1978 Nybegynder
17. juli 2007 - 21:13 #2
Ja, men så skiften den slet ikke, så visen den hele tiden den samme kombination :-(
Avatar billede kimlarsen1978 Nybegynder
13. februar 2010 - 19:04 #3
Lukker
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