Guffa | Foto | Programmering

Slumpa i Access

Problemet med att slumpa fram poster i Access är att funktionen Rnd() alltid ger samma serie av slumptal. Det löser man genom att skicka in ett negativt värde i funktionen Rnd(), då används det värdet som utgångsvärde för ett nytt slumptal.

Vi tar ett slumptal från VBScript och använder som utgångsvärde för slumptalen i databasfrågan. För att alla poster ska få olika utgångsvärden så får vi lägga ihop slumptalet med ett unikt fält ifrån tabellen.

Genom att vi använder ett fält ifrån varje post när vi beräknar slumptalet så kommer vi även runt problemet med att Access optimerar frågan. Ifall man inte har med ett fält från tabellen i beräkningen så kommer bara beräkningen bara göras en enda gång, och vi skulle få samma slumptal för alla posterna.

Så här skapar man en databasfråga som slumpmässigt plockar ut fem poster:

Randomize
strSQL = "select top 5 Id, Info from Tabellen order by Rnd(-Id-" & Replace(Rnd(),",",".") & ")"