Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problema Random su archivio filtrato

    Da una tabella devo filtrare dei dati e poi ne devo estrarre uno random.
    Il problema è che ogni tanto mi da EOF
    Malgrado che abbia sottratto uno al totale il difetto mi rimane.
    Dove sbaglio?
    Vi riporto il listato
    -----------------------------------------------------------
    Dim oConn
    Set oConn = Server.CreateObject("ADODB.Connection")
    oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/mdb/MyDB.mdb"))

    sSQL1 = "SELECT COUNT(*) AS tot_rec From MyTable where tipo_ovg='o'"
    Set oConta = Server.CreateObject ("ADODB.Recordset")
    oConta.Open sSQL1,oConn
    TotBanner = oConta("tot_rec") - 1
    oConta.Close
    Set oConta = Nothing

    sSQL = "SELECT link From MyTable where tipo_ovg='o'"
    Set oMyValue = Server.CreateObject ("ADODB.Recordset")
    oMyValue.Open sSQL,oConn,3,3
    oMyValue.MoveFirst
    Randomize
    ValueCasuale = (cint(rnd() * TotValue)-1)
    oMyValue.Move ValueCasuale
    Stringa=oMyValue("link")
    oMyValue.Close
    Set oMyValue = Nothing
    oConn.Close
    Set oConn = Nothing
    response.write (Stringa)
    --------------------------------------------------------------

  2. #2
    UP

  3. #3
    up

  4. #4
    c'è nessuno in casa?

  5. #5
    ... ma siete tutti su OT?

  6. #6
    ciao, io mi sono fatto questa funzione:

    <%
    Dim objcollection, m, titoli2, elemento, idrecord, tabella, condiz_rnd
    function id_rnd(tabella, idrecord, condiz_rnd)
    m = 0
    id_rnd = "SELECT " & idrecord & " FROM " & tabella & " " & condiz_rnd
    set titoli2 = server.createobject("adodb.recordset")
    titoli2.open id_rnd, connDB, 1, 1
    set objcollection = createobject("scripting.dictionary")
    do while not titoli2.EOF
    elemento = titoli2(idrecord)

    'associa ad ogni item della collezione il valore dell'id del record recuperato
    objcollection.add ("record" & m), elemento
    m = m+1
    titoli2.movenext
    loop

    'assegna alla variabile il valore dell'id estratto a caso dagli item creati
    randomize()
    id_rnd = objcollection.item ("record" & cint(m*rnd()))
    if id_rnd ="" then
    id_rnd = elemento
    end if
    set objcollection=nothing
    end function %>

    poi per richiamarla fai come nell'esempio:
    voglio pescare un record a caso tra quelli che hanno il campo "opzione" uguale a 'si'

    <% query = "SELECT * FROM tabella WHERE id = " & id_rnd("tabella", "id", "WHERE opzione = 'si'") %>

    spero possa esserti d'aiuto, so che può non essere il massimo però funziona...

  7. #7
    la cosa la vedo abbastanza contorta.
    Comunque non capisco il perchè mi dia EOF.
    mettiamo l'esempio di avere, dopo la query, 5 records in tabella
    All'apertura il puntatore è posizionato sul primo (quindi altri 4 sotto). Estraendo random uno di questi 5 ...

    Randomize
    ValueCasuale = (cint(rnd() * 5)-1)

    il valore restituito è da 0 a 5, ma così sono 6 e quindi ne sottraggo 1
    ... ma ora che ci penso sottraendone uno ora, se viene 0 mi torna -1

    ECCO L'ERRORE!!

    Questa è la giusta riga

    ValueCasuale = (cint(rnd() * 5-1))

    tutto chiaro! CIAUZ

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