Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Script random mensile.

  1. #1

    Script random mensile.

    Salve a tutti, per la prima volta mi trovo a dovere randomizzare dei record presenti in una tabella.

    Mi spiego: ho una serie di record, vorrei dinamicizzare il caricamento di questi, in maniera random, scatenando lo script solo quando cambia il mese.

    ES:

    Record1
    Record2
    Record3
    ...
    RecordN

    Mese Gennaio --> Record2
    Mese Febbraio --> RecordN
    Mese Marzo --> Record3
    ...
    Mese Aprile --> Record1.

    Qualcuno ha qualche suggerimento o dritta da darmi?

    Grazie a tutti!
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  2. #2
    Io farei così:
    - creo una tabella random (è il nome della tabella) dove inserisco l'id del record e il mese;
    - ogni volta che entro nel sito effettuo un controllo su quella tabella verificando la corrispondenza del mese attuale con quello in tabella;
    - se il mese attuale è diverso da quello in tabella, faccio una query sulla tabella contenenti i record desiderati, dalla quale estraggo un record il cui ID è diverso da quello presente in tabella;
    - aggiorno a questo punto la tabella con il nuovo id record e il nuovo mese.

    Potrebbe funzionare.

  3. #3
    Si, potrebbe funzionare, ma come effettuo la query random?
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  4. #4
    codice:
    sqlstring = "SELECT Max(ID) AS MaxID, Min(ID) AS MinID FROM tabella" 
    Set objRs = Server.CreateObject("ADODB.Recordset")
    objRs.ActiveConnection = objConn
    objRs.Open sqlstring
    
    maxID = objRs("MaxID")
    minID = objRs("MinID")
    Randomize
    rndID = Int((maxID - minID + 1) * Rnd + minID) 
    
    objRs.Close
    Set objRs = Nothing
    
    sqlstring2 = "SELECT TOP 1 * FROM tabella WHERE ID >=" & rndID & " AND ID <>" & record_database_ID
    Non so però se funzionerà la seconda query. Da provare.

  5. #5
    Originariamente inviato da Dirk Pitt
    Io farei così:
    - creo una tabella random (è il nome della tabella) dove inserisco l'id del record e il mese;
    - ogni volta che entro nel sito effettuo un controllo su quella tabella verificando la corrispondenza del mese attuale con quello in tabella;
    - se il mese attuale è diverso da quello in tabella, faccio una query sulla tabella contenenti i record desiderati, dalla quale estraggo un record il cui ID è diverso da quello presente in tabella;
    - aggiorno a questo punto la tabella con il nuovo id record e il nuovo mese.

    Potrebbe funzionare.
    Stavo pensando, a proposito di questo tuo suggerimento, la seguente.
    A me basta popolare, al cambio del mese, la tabella di appoggio (RANDOM), con l'ID e il MESE.
    Poi mi basta andare a leggere, in funzione dell'ID, il record corrispondente sulla tabella già esistente, ed il gioco è fatto, no?

    Se si, mi suggerisci un codice per popolare (INSERT) la tabella in modalità random?
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  6. #6
    Lo stesso codice che ti ho già suggerito, basta che cambi la seconda query che anzichè essere di interrogazione sarà di aggiornamento del record.
    Ad esempio:
    codice:
    sqlstring2 = "UPDATE tabella SET ID >=" & rndID & ", mese=" & variabile_mese

  7. #7
    Stavo però pensando che è possibile che il nuovo random ti restituisca lo stesso ID già presente in tabella. Dipende dalla quantità di record che hai. Se sono migliaia le probabilità sono minimissime, se sono 10 le probabilità aumentano "di brutto".

  8. #8
    50 record.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  9. #9
    A questo punto dipende dalla fortuna.
    Oppure puoi fare un If e verificare se il dato estratto random (quindi il valore della variabile rndID) è uguale al valore già contenuto nella tabella. Se lo è riavvii il calcolo random, altrimenti prosegui con l'aggiornamento.
    E se anche riavviando il calcolo random ottieni nuovamente lo stesso ID, il sistema riverifica e rifà il calcolo random.
    Alla terza volta che succede, armati di offerte, recati in chiesa ed accendi tanti ceri quante sono le volte che ha rifatto il random moltiplicato per 10. :maLOL:

  10. #10
    :maLOL: :maLOL: :maLOL:

    Ho fatto delle prove, va bene così, funziona egregiamente.
    Grazie per i suggerimenti!
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.