Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Een willekeurig record ophalen (C#, ASP.NET)

Anoniem
None
10 antwoorden
  • Ik heb een website waar diverse producten en omschrijvingen daarvan staan.
    Maar ik heb er ook een Tip op staan. Deze tips staan in een database en worden getoond op de diverse pagina's.

    Ik heb nu 64 tips die netjes genummerd zijn van 1 t/m 64. Dit nummer is tevens de Prime Key van de tabel.
    Op dit moment laat ik d.m.v. ophoging van een variabele met iedere keer 1 een volgende tip zien.

    Probleem gaat worden als iemand een tip er tussenuit gaat halen. (uit de tabel dus)

    Oplossing die ik bedacht heb is om een willekeurige tip uit de database te halen.

    Nu kan ik me iets herinneren met [i:938c7dc566]Random [/i:938c7dc566] en heb enkele voorbeelden bekeken.
    Maar waar het om gaat is dat er random een getal aangemaakt wordt die hoe dan ook in de database voorkomt.

    Wie denkt er even met me mee en helpt me op weg?
  • Als je met SQL Server werkt kan je ook het volgende doen:
    [code:1:3d775e0d8b]SELECT TOP 1 kolom FROM tabel ORDER BY NEWID()[/code:1:3d775e0d8b]

    En anders haal je gewoon de collectie met ID's op en selecteert daar at random een nummer uit (het n-th item). In een tweede query haal je dan de rest op. Qua performance ga je dat niet echt merken met 64 items.

    btw. Het is primary key, en niet prime key ;)
  • [quote:a990213cc5]En anders haal je gewoon de collectie met ID's op en selecteert daar at random een nummer uit (het n-th item). [/quote:a990213cc5]

    Exact, ik wil daar 'at random' een nummer uit halen. Maar hoe doe ik dat?
    Want wat is die NEWID() in je select-statement SELECT TOP 1 kolom FROM tabel ORDER BY NEWID()?

    ps ik werk met een .mdb(Access)

    Je moet weten dat ik op dit moment [i:a990213cc5]toevallig[/i:a990213cc5] weet wat de waarde van die Primary Keys zijn omdat ik nu in de database kan kijken maar dat weet ik in de toekomst niet. Ook weet ik niet hoeveel records er in de toekomst zullen zijn.
  • mssn dat een van deze links je verder kan helpen (ik weet zelf niets van Access)

    http://www.codefixer.com/tutorials
    andom_record.asp
    http://www.webforumz.com/asp-forum/2670-random.htm
    http://www.4guysfromrolla.com/webtech/102999-1.shtml
  • [quote:4d862e572a="Wiep Corbier"]Exact, ik wil daar 'at random' een nummer uit halen. Maar hoe doe ik dat?[/quote:4d862e572a]
    Het framework heeft toch een Random class die je daarvoor kan gebruiken? En bij mijn weten kan je gewoon een collection op index benaderen (maar ik kan me vergissen).

    Stel je hebt een ArrayList [i:4d862e572a]list[/i:4d862e572a] met waarden, dan zal onderstaande code daar random het n-th item uit selecteren (ongetest! het gaat om het idee):
    [code:1:4d862e572a]
    // Bepaal het aantal 'records'
    int numrecords = list.Count;

    // Initialiseer de randomizer.
    // Bij mijn weten wordt deze standaard al ge-seed. Als dat niet zo is,
    // dan moet je dat zelf nog even doen.
    Random rand = new Random();

    // Pick a number
    int index = rand.Next(1, numrecords);

    // list[index] geeft nu het n-th item uit de lijst;
    [/code:1:4d862e572a]

    [quote:4d862e572a="Wiep Corbier"]
    Want wat is die NEWID() in je select-statement SELECT TOP 1 kolom FROM tabel ORDER BY NEWID()?[/quote:4d862e572a]
    Dat mag je direct weer vergeten ;). Newid() is een functie in SQL Server die een nieuwe GUID aanmaakt. In deze constructie maak je handig gebruik van het feit dat een GUID per definitie uniek is. Bij mijn weten is er geen equivalent in Access.
  • Thanks mensen, ik ga er mee aan de slag. :D
  • ff code van Annie gebruikt…
    [code:1:263de470f5]
    // Bepaal het aantal 'records'
    int numrecords = "select max(id) from tabel1"

    // Initialiseer de randomizer.
    // Bij mijn weten wordt deze standaard al ge-seed. Als dat niet zo is,
    // dan moet je dat zelf nog even doen.
    Random rand = new Random();

    // Pick a number
    int index = rand.Next(1, numrecords);

    int newindex = "select top 1 * from tabel1 where id >=" + numrecords.tostring()
    if (newindex ==0)
    { "haal eerste of laatste record op"
    }
    [/code:1:263de470f5]
  • hoe kan je nou een int declareren en daar een string in gooien, of zie ik dat verkeerd?

    [quote:098e6ad198]// Bepaal het aantal 'records'
    int numrecords = "select max(id) from tabel1"
    [/quote:098e6ad198]
  • dat heet nou pseudocode. Die int is het resultaat van die query. Versimpelt de code voor het voorbeeld.
  • [quote:4962c1e0f8="maIRnaairruJ"]dat heet nou pseudocode. Die int is het resultaat van die query. Versimpelt de code voor het voorbeeld.[/quote:4962c1e0f8]

    Ja oke, maar als je het dus zo leest…

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.