Avatar billede dope Nybegynder
19. maj 2001 - 09:35 Der er 8 kommentarer og
1 løsning

Randomize

Jeg laver et udtræk fra en database med en where klause.

select index,navn,status from tabel where status = inaktiv

Blandt denne selection ønsker jeg at vælge et random indexnummer (randomindex) der herefter udsættes for følgende.

eks.
update tabel set status = aktiv where indeks = randomindex

Spørgsmålet er:
Hvordan vælger jeg et random nummer mellem indextal fra et recordset der ikke er fortløbende?
Avatar billede brian Nybegynder
19. maj 2001 - 10:07 #1
SELECT MIN(ID) AS minID, MAX(ID) AS maxb
Avatar billede brian Nybegynder
19. maj 2001 - 10:14 #2
ups !!
  SELECT MIN(ID) AS minID, MAX(ID) AS maxb 
giver dig mindste og højeste værdi.
Herefter skal du finde ud af om det ID du vælger med randomize eksisterer i databasen.

Randomize
RanTal = Int(Rnd(1)*(maxb-minb))+minb
giver et tilfældigt tal mellem mindste og højeste værdi.
Avatar billede brian Nybegynder
19. maj 2001 - 10:16 #3
Det er dog noget rod jeg sidder og laver !!!!

SELECT MIN(ID) AS minID, MAX(ID) AS maxID


Randomize
RanTal = Int(Rnd(1)*(rs(\"maxID\")-rs(\"minID\")))+rs(\"minID\")


Avatar billede dope Nybegynder
19. maj 2001 - 10:56 #4
Kan du prøve at descifrere randomize sætningen... jeg har lidt svært ved at gennemskue den...

Det kan være tømmermændende taler deres  klare sprog... :-)
Avatar billede brian Nybegynder
19. maj 2001 - 12:54 #5
kender det godt - er i samme situation, hehe.

tilfældigtTal = Int(Rnd(1)*(højeste værdi)-(mindste værdi))+mindste værdi

altså du vælger et tilfældigt heltal - Int(Rnd(1)

næste del :
*top)+bund - hvis du skal bruge et tal mellem 1 og 10 skal top være 10 og bund 1.
Hvis du skal bruge et tal mellem 50 og 75 skal top være 25 og bund være 50 (bund + top = 75).

Jeg ved ikke om det er til at forstå, men jeg er som sagt i samme situation - for meget humle og for lidt søvn - skal til stor fødselsdag om nogle timer så jeg er ved at reparere lige nu :-)

Avatar billede tofte Juniormester
19. maj 2001 - 13:48 #6
set rs = Server.CreateObject(\"ADODB.Recordset\")
    rs.Open \"SELECT COUNT(*) as antal from banner WHERE etellerandet\", Conn, 1, 3


    antal = rs(\"antal\")


if antal <> 0 then
    set rs = Server.CreateObject(\"ADODB.Recordset\")
    rs.Open \"SELECT * FROM Banner WHERE shown<>exp\", Conn, 1, 3


    randomize
   
    linie = int(antal * rnd)
   
   
    rs.MoveFirst
    rs.Move(linie)
end if
Avatar billede dope Nybegynder
19. maj 2001 - 15:14 #7
tofte >>
Hvad menes der med recordset.movefirst / recordset.move(linie)?
Avatar billede tofte Juniormester
19. maj 2001 - 15:30 #8
der er for øvrigt en fejl shown<>exp skal selvfølgeligt være de samme betingelser som oppe i den øverste SQL.

rs.movefirst går til den første record i databasen. rs.move går til det nummer i recordet som man har skrevet i parantesen. linie angiver et tilfældigt tal, man flytter derfor til en tilfældigt record i databasen.

Her efter kan du vha. rs(\"felt\") få udskret indholdet af et felt i recorden.
Avatar billede dope Nybegynder
17. august 2001 - 16:55 #9
Det fik jeg sgi ikke en si uj af.... æv bæv...
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