Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387

    Randomize su un elenco di valori non consecutivi

    Buon pomeriggio a tutti.

    Ho un DB Access, pagine ASP.

    Debo estrarre da questo database un ID in maniera random, con intervalli ben definiti, cioè ad esempio da 757 a 1545.

    Il problema che questi ID NON sono consecutivi.... cioè puo essere che siano

    757, 758, 1001, 1002, 1003, 1010, 1025, 1544, 1545, in un numero peraltro non noto a priori.

    Con una condizione, trovo agilmente il limite minimo e massimo....

    codice:
    marca = "KIT"
    
    nTop = "select max(id) as MaxId from stampanti where marca = '"&marca&"' "
    minTop = "select min(id) as MinId from stampanti where marca = '"&marca&"' "
    rs.open nTop, cn
    MaxId = rs("MaxId")
    rs.close
    rs.open minTop, cn
    MinId = rs("MinId")
    rs.close
    
    Randomize
    casuale = Cint(Rnd * MinId)+(MaxId-MinId) 'Random a partire da MinId e muoviti al max di N posizioni
    rs.close
    Fin qui, appunto, ci siamo, devi fare un random tra 757 e 1545

    Come faccio pero' a intercettare se quel Random nello specifico NON esiste?

    Non riesco proprio a costruirla sta funzione! Pensavo di fare un

    codice:
    sql = "select modello from stampanti where id = " &casuale"
    rs.open sql, cn
    
    if rs("modello") is null then random + 1
    end if
    Ma come faccio a ciclare in questo modo? Se PRIMA non so se rs.eof NON posso aumentare il random... se non aumento il random, rischio di trovarmi con una cella vuota!!

    Grazie a tutti!

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    bolFound = false
    Do Until bolFound = true
    sql = "select modello from stampanti where id = " &casuale
    set rs = cn.Execute(sql)
    if not rs.EOF then
    bolfound = true
    end if
    set rs = nothing
    Loop
    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    Perfetto... Funge alla grande..... E invece di fargli aumentare una unità il numero casuale (magari esce fuori dal range!) .... gli faccio rifare direttamente il random e buonanotte... Direi molto veloce, anche con circa 40 numeri sparsi....

    Inoltre mi sono dimenticato di dire che deve fare un doppio confronto: l'id random deve esistere nel database e inoltre deve corrispondere a una determinata marca... pertanto..... la vera sql che avevo dimenticato di scrivere è

    sql = select modello from stampanti where marca = '"&marca&"' and id = "&casuale

    pertanto doppio lavoro per lui!

    Grazie ancora Roby!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.