Avatar billede chrisrj Forsker
12. juli 2003 - 12:48 Der er 13 kommentarer og
2 løsninger

Problem med random udtræk

Jeg har fundet denne kode i et andet spg, men det virker ikke!

strSQL = "Select * From profiler where deluxe=true"
    Set rse = Conn.Execute(strSQL)
   
    Fundet = false
    Do While Not Fundet
        rse.MoveFirst
        Randomize
        rse.Move(int(rse.RecordCount * rnd))
        If Not rse.EOF And Not rse.BOF Then
            Fundet = True
        End If
    Loop


Fejlen er:

Microsoft OLE DB Provider for ODBC Drivers error '80040e24'

Rowset does not support fetching backward.

/top_menu.asp, line 121

linie 121:
rse.Move(int(rse.RecordCount * rnd))

Hvad er der galt og hvordan kan det rettes?
Avatar billede pfp Nybegynder
12. juli 2003 - 12:50 #1
Du kan ikke bruge rse.MoveFirst i den sammenhæng. Så skal du vist have defineret din forbindelse med en hel masse parametre...såsom cursortype osv..
Avatar billede pfp Nybegynder
12. juli 2003 - 12:50 #2
Mit er bare et gæt, så ret mig endelig hvis jeg tager fejl..
Avatar billede chrisrj Forsker
12. juli 2003 - 12:51 #3
Jeg har prøvet at fjerne rse.MoveFirst, men det var det samme... :(
Avatar billede chrisrj Forsker
12. juli 2003 - 13:14 #4
Har du andre forslag?
Avatar billede ellebaek Nybegynder
12. juli 2003 - 16:53 #5
strSQL = "Select * From profiler where deluxe=true"
    Set rse = Conn.Execute(strSQL)
   
    Fundet = false
    Do While Not Fundet
        rse.MoveFirst
        Randomize
        rse.Move(CInt(rse.RecordCount * rnd))
        If Not rse.EOF And Not rse.BOF Then
            Fundet = True
        End If
    Loop


Skal det ikke se ud som dette ??
Avatar billede soes Nybegynder
12. juli 2003 - 17:00 #6
Du kan evt. proeve at oprette et recordset paa den 'rigtige' maade.
strSQL = "Select * From profiler where deluxe=true"
Set rse = Server.CreateObject("ADODB.RecordSet")
rse.Open strSql, Conn, 3, 1
Fundet = false
    Do While Not Fundet
        rse.MoveFirst
        Randomize
        rse.Move(CInt(rse.RecordCount * rnd))
        If Not rse.EOF And Not rse.BOF Then
            Fundet = True
        End If
    Loop
Avatar billede ellebaek Nybegynder
12. juli 2003 - 17:08 #7
soes... den måde recordsettet er oprettet på her bør være ok...

Hvis det bare er oprettet som:

set Conn = server.createObject("ADODB.Connection")
Conn.open strToDb

Det er ikke blevet vist her hvordan det er oprettet, men det er ikke forbindelsen den brokker sig over, så derfor må det antages at dette virker...!
Avatar billede soes Nybegynder
12. juli 2003 - 17:12 #8
Jeg har blot somme tider haft problemer med at faa RecordCount at vide hvis jeg brugte den hurtige loesning med set rs = conn.execute... derfor min kommentar
Avatar billede ellebaek Nybegynder
12. juli 2003 - 17:16 #9
ok....

Det kan selvfølgelig godt være, har ikke brugt den mulighed før.
Men jeg har lige prøvet mig lidt frem, og det gør ingen forskel på om der står: CInt, Int eller int...

Måske hvis du skriver, altså hvis du kender antallet af records og det er konstant...
strSQL = "Select * From profiler where deluxe=true"
    Set rse = Conn.Execute(strSQL)
   
    Fundet = false
    Do While Not Fundet
        rse.MoveFirst
        Randomize
        rse.Move(CInt(100 * rnd))
        If Not rse.EOF And Not rse.BOF Then
            Fundet = True
        End If
    Loop
Avatar billede chrisrj Forsker
12. juli 2003 - 17:32 #10
Nu virker det.

Jeg brugte soes forslag, så hvis du liige lægger et svar, får du dine points. :)

ellebaek, hvis du også vil have lidt for din tid, så lig du også et svar. ;)
Avatar billede ellebaek Nybegynder
12. juli 2003 - 17:35 #11
så smider jeg da ógså et svar...
Avatar billede netro Nybegynder
12. juli 2003 - 20:23 #12
Avatar billede chrisrj Forsker
12. juli 2003 - 20:27 #13
netro -> øhhh tak. Men er det ikke lidt sent at komme med en løsning, når problemet er klaret?

soes -> Hvor er du?? Svar venligst inden 24 timer hvis du vil have dine points!
Avatar billede soes Nybegynder
13. juli 2003 - 07:36 #14
du faar lige et svar
Avatar billede netro Nybegynder
13. juli 2003 - 16:25 #15
Jo, undskyld mit forsøg på at være venlig.
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