22. oktober 2000 - 23:15Der er
19 kommentarer og 1 løsning
Hvordan laver jeg et par vilkårlige udtræk fra en DB ?
Hej
Jeg skal lave 2 - 3 vilkårlige udtræk fra en DB - jeg har været en del svar igennem, men kunne kun finde eksempler på hvordan det gøres med ét udtræk :-(
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Function Show() Randomize RandNum = Int(Rnd * Ialt) + 1 Record.MoveFirst For i = 1 to RandNum - 1 Record.MoveNext next Response.Write Record(\"ID\") \' HER VISES EN TILFÆLDIG POST :) end function
du kan ikke hente 3 vilkårlige poster med en sætning... Du kan derimod hente hele recordsettet og så lave noget med random 3 værdier og hente posten med det mindre random nr. posten med det midterste random og post med det største...
du kan sådan set godt hente 3 vilkårlige poster... hvis du bare bruger det som phylox2 skrev 3 gange... (forbind til db, tag random, luk forbindelse og forfra og forfra) du risikere dog hermed, at det er den samme post der bliver trukket alle 3 gange....
Det var da totalt besværligt at gøre sådan, se nu her :O) åben din db og: Function RandomRec(a) arrRecords = rs.Getrows rs.Close if not rs.eof Randomize() intMaxarr = ubound(arrRecords, 2) for n = 0 to a ranRec = Int((intMaxarr+1) * Rnd) RandomRec = RandomRec & \", \"& arrRecords(2, ranRec) next end if end function
Kald funktionen med RandomRec(a), hvor a er antallet af randomrecords!! Funktionen returnerer en kommasepareret string, som du nemt kan manipulere med Split-funktionen :O)
Jamen det er da fint, men sandsynligheden for at man rammer den samme record eksisterer jo på den måde :O) Man skal da heller ikke bruge mine udtræk lige efter hinanden, der er da frit valg når man får en variabel ik\' :O)
Jens tilføj lige denne her i min kode, så der bliver chekket for ens udtræk: lige efter ranRec = Int((intMaxarr+1) * Rnd)... ranRec = ranRec2 if ranRec = ranRec
Jamen det er da fint, men sandsynligheden for at man rammer den samme record eksisterer jo på den måde :O) Man skal da heller ikke bruge mine udtræk lige efter hinanden, der er da frit valg når man får en variabel ik\' :O)
Hej Jens! For at undgå gentagelse af samme record, så brug det her:
Function RandomRec(a) arrRecords = rs.Getrows rs.Close if not rs.eof Randomize() intMaxarr = ubound(arrRecords, 2) for n = 0 to a ranRec = ranRec2 ranRec = Int((intMaxarr+1) * Rnd) if ranRec <> ranRec2 then RandomRec = RandomRec & \", \"& arrRecords(2, ranRec) else n = n - 1 end if next end if end function
Hej Jens! Kan du lave et udtræk fra din db?, post din åbningsreplik så *S*
Nu har jeg lavet endnu en function, der chekker for duplikater :O) En modificeret en af min tidligere: Function RandomRec(a) arrRecords = rs.Getrows rs.Close if not rs.eof Randomize() intMaxarr = ubound(arrRecords, 2) if intMaxarr*0,75 < a then RandomRec = \"To high number for that amount records\" end if exit function
for n = 0 to a bArr = false ranRec = Int((intMaxarr+1) * Rnd) Redim Preserve arrRandom(n) if Len(RanRec) = 1 then ranRec = \"0\" & ranrec end if
for q = 0 to ubound(arrRandom) - 1 if arrRandom(q) = ranRec then n = n - 1 bArr = true end if next if bArr = false then arrRandom(n) = ranRec end if RandomRec = RandomRec & \"|\" & arrRecords(2, arrRandom(n)) next end function ------------------------------- Og den kalder du eks.vis med: response.write RandomRec(4) Lad os nu sige at den returnere: Den|gang|jeg|drog|afsted
Så anvender du det på følgende facon: arrRecord = Split(RandomRec(4) \"|\", -1, 1) arrRecord(0) contains \"Den\" arrRecord(1) contains \"gang\" arrRecord(2) contains \"jeg\" arrRecord(3) contains \"drog\" arrRecord(4) contains \"afsted\" ---------------------------------------- Det er også gennemtestet og ikke bare et skud i tågen *GG*
Men vend tilbage hvis du ikke kan skabe conn. til db :o|
PS: runesoft - ranRec2 bliver jo sat ved første gennemkørsel til ranRec. ranRec er første gang tom, lidt tricky :O). Men ellers godt set med med 2 ens *GG*
Regardz Janus
PSS: den fortjener snart mere end 60point. Fjeren blev til 10 høns :O)
mit problem er at jeg ikke ved hvordan det skal sættes samme det hele :-(
altså åbner DB\'en trækker ud osv. osv.
Synes godt om
Ny brugerNybegynder
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.