12. juli 2003 - 12:48Der 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'
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
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
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
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
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.