Ragazzi ho un problema, con la procedura riportata qui sotto, vado a scrivere un numero casuale su ogni riga presente nella tabella foto.
Il problema è che la casualità non cambia ad ogni rigo, ma fa prila le prime 10 righe, poi ne fa 20, poi altre 10, ecc. con lo stesso numero.
Praticamente le fa a gruppi.



cn.Open()
        Sql = "SELECT * FROM Foto"
        dap = New OleDbDataAdapter(Sql, cn)
        dst = New DataSet
        dap.Fill(dst, "Foto")
        
        For x = 0 To dst.Tables("Foto").Rows.Count - 1
            With dst.Tables("Foto").Rows(x)
                Dim Randi As New Random()
                Dim i As Integer = Randi.Next(0, 1000000) ' un numero compreso tra 0 e 1000000 
                
                Sql = "UPDATE Foto SET Random=" & i & " WHERE IDFoto=" & .Item("IDFoto")
                cmd = New OleDbCommand(Sql, cn)
                cmd.ExecuteNonQuery()
                    
            End With
        Next
        
        cn.Close()


www.webrimini.com
non capisco se la tua procedura le fa a gruppi creandoti problemi o tu le vuoi fare a gruppi...

Ormai programmano tutti... ma la professionalità appartiene a pochi
Assolutamente no, non le voglio a gruppi, ma ogni rigo deve avere il suo numero casuale

www.webrimini.com
23 messaggi dal 06 marzo 2008
Non ho capito bene il problema ma penso che l'oggetto Randi debba essere creato fuori dal ciclo For in modo da poter sfruttare la successione dei numeri pseudo-casuali che altrimenti, come nel codice che hai riportato, vengono rigenerati sempre a partire dallo stesso seed.
Ho provato come hai detto tu, l'ho dichiarato nella sezione dichiarazioni, insomma fuori dal ciclo, ma il problema persiste.

www.webrimini.com
23 messaggi dal 06 marzo 2008
Scusa se insisto ma pova a fare così:

cn.Open()
Sql = "SELECT * FROM Foto"
dap = New OleDbDataAdapter(Sql, cn)
dst = New DataSet
dap.Fill(dst, "Foto")
Dim Randi As New Random()
For x = 0 To dst.Tables("Foto").Rows.Count - 1
With dst.Tables("Foto").Rows(x)

Dim i As Integer = Randi.Next(0, 1000000) ' un numero compreso tra 0 e 1000000

Sql = "UPDATE Foto SET Random=" & i & " WHERE IDFoto=" & .Item("IDFoto")
cmd = New OleDbCommand(Sql, cn)
cmd.ExecuteNonQuery()

End With
Next

cn.Close()


Ciao......
grazie, ho risolto.
Mi sembrava essere tornato un principiante.
Il problema non era lì, ma successivamente quando facevo scorrere le foto in un javascript, praticamente nella stringa sql mi ero dimenticato di dare l'ORDER BY RANDOM, quindi le vedevo sempre nella stessa sequenza.

Comunque grazie mille lo stesso.

www.webrimini.com

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.