[VB] random record in access database

Pagina: 1
Acties:

  • mr_star
  • Registratie: Maart 2003
  • Laatst online: 20-08 14:17
Mijn bedoeling is om uit een database een willekeurig record te krijgen, waarvan ik de waarde van de kolom waaraan de records moeten voldoen, ingeef.

Aangezien ik gebruik maak van een datacontrol, dacht ik: Ik vul gewoon mijn datacontrol op met de records die voldoen aan mijn voorwaarde, en dan neem ik daar een willekeurig nummer uit.

Mijn code is als volgt:


private sub command1_click()
data1.recordsource = "SELECT * FROM tabel WHERe artiest = '" & strArtiest & "'"
data1.refresh
Data1.Recordset.MoveFirst
Randomize
Data1.Recordset.Move Int((Data1.Recordset.RecordCount - 1 + 1) * Rnd) +1)
end sub

Nu, dat werkt, die datacontrol opvullen met die bepaalde artiest. Maar ik merk dat mijn recordcount altijd verschilt. Neem nu dat er 40 nummers van die artiest zijn, is de ene keer mijn recordcount 20, de andere keer 15,... Maar nooit 40.

En dat heeft tot gevolg dat alleen de eerste nummers willekeurig worden weergegeven, de laatste 15 krijg ik nooit te zien.

'K heb mij al suf gezocht op google, en op dit forum, maar ik vind nergens de fout.

Verwijderd

De select die je doet is waarschijnlijk case-sensitive zodat je alleen de records vind die EXaCt voldoen ook kwa hoofd en kleine letters dus.

je kan proberen om in plaats van de = " artiest" een LIKE met %artiest% te doen

SELECT * FROM tabel WHERe artiest = '"%' & strArtiest & '%'''

(haakjes kloppen waarschijnlijk niet)

[ Voor 41% gewijzigd door Verwijderd op 24-03-2003 19:37 ]


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:15

Rhapsody

In Metal We Trust

Wat je misschien kan proberen is:

als eerste een count uitvoeren dus aantal records tellen en vervolgens een random nummer genereren en daarna een select uitvoeren.

🇪🇺 pro Europa!


  • mr_star
  • Registratie: Maart 2003
  • Laatst online: 20-08 14:17
Ik heb het alletwee geprobeerd, maar zonder resultaat, verder dan de eerste 22 kom ik niet. Kan ik niet op de 1 of andere manier nog voor ik sorteer 'tellen' hoeveel nummers een bepaalde artiest heeft? Om dan op die manier de maximum waarde te weten te komen.

Als ik in mijn datacontrol de uitgesorteerde nummers bekijk, dan kom ik aan bv 20 als ik met de schuifbalk helemaal tot beneden gegaan ben, maar als ik dan met de pijltjestoetsen verder naar beneden ga, krijg ik nog nummers te zien, en past de schuifbalk zich wel aan.

En de namen zijn identiek, dus ook dezelfde hoofdletters.

Verwijderd

bij sommige database systemen moet je eerst een last of movelast doen voordat je de corecte recordcount kunt op vragen, probeer dat anders eens.

  • WvdWest
  • Registratie: Augustus 2002
  • Niet online
Als je de nummers van een numeriek ID hebt voorzien dan kan je misschien dmv een max in je select het aantal bepalen.

I'm not a complete idiot - several parts are missing.


  • mr_star
  • Registratie: Maart 2003
  • Laatst online: 20-08 14:17
Verwijderd schreef op 24 March 2003 @ 21:27:
bij sommige database systemen moet je eerst een last of movelast doen voordat je de corecte recordcount kunt op vragen, probeer dat anders eens.
Dat is het :) Het werkt! Het ligt eigenlijk zo voor de hand dat je er niet aan denkt. (behalve sommigen helder van geest ;))
Pagina: 1