Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Access, campo casuale

  1. #1

    Access, campo casuale

    Con Access di Microsoft (io utilizzo access 2000), vorrei aggiornare il contenuto di un campo di una tabella con un valore casuale (random) compreso fra due numeri.

    Ho provato ad utilizzare una query di aggiornamento, usando la funzione RANDBETWEEN, ma quando lancio la query mi appare una finestra che mi chiede di inserire un valore. Quando lo inserisco la query parte... ma tutti i valori del campo vengono valorizzati invece che a caso, con il numero che ho inserito... :master:

    io ho fatto così:

    crea query in visualizzazione struttura
    query di aggiornamento
    e ho messo in Aggiorna a: RANDBETWEEN(100,200)

    salvo la query e la lancio. Ma il risultato non è quello desiderato.

    Qualche consiglio?
    «Nella mia carriera ho sbagliato più di novemila tiri. Ho perso quasi trecento partite. Ventisei volte i miei compagni mi hanno affidato il tiro decisivo e l'ho sbagliato. Nella vita ho fallito molte volte. Ed è per questo che alla fine ho vinto tutto» - Michael Jordan

    «Prima ti ignorano, poi ti deridono, poi ti combattono. Poi vinci.» - Gandhi

  2. #2
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,704
    Non ho trovato in nessun posto quella funzione ... cmq, per generare numeri casuali da 100 a 200 puoi usare:
    Int(Rnd()*100)+100
    che funziona.

  3. #3
    Ho provato il tuo suggerimento, ma mi propone lo stesso problema:

    lancio la query e mi appare una finestra che mi chiede di inserire un valore. Se metto un valore, i valori del campo vengono tutti valorizzati con quel valore fisso.

    In pratica non mette i numeri casuali, ma mette sempre, per tutti i record, lo stesso valore che inserisco nella finestrella che si apre al lancio della query... :master:
    «Nella mia carriera ho sbagliato più di novemila tiri. Ho perso quasi trecento partite. Ventisei volte i miei compagni mi hanno affidato il tiro decisivo e l'ho sbagliato. Nella vita ho fallito molte volte. Ed è per questo che alla fine ho vinto tutto» - Michael Jordan

    «Prima ti ignorano, poi ti deridono, poi ti combattono. Poi vinci.» - Gandhi

  4. #4
    Ok, ho trovato un errore che ho commesso:

    il campo della tabella lo definivo come testo, invece che come numero.

    ora che l'ho valorizzato come numero, non appare più la finestrella ed effettivamente la funzione genera un numero random... ma quel numero random generato (sempre quello, lo stesso) lo mette in tutti i record!

    Io invece avrei bisogno che ogni singolo record avesse un numero random generato (non importa anche se ci sono eventuali doppi, l'importante è che ogni record abbia un numero casuale compreso in un determinato intervallo... per esempio fra 100 e 200).
    «Nella mia carriera ho sbagliato più di novemila tiri. Ho perso quasi trecento partite. Ventisei volte i miei compagni mi hanno affidato il tiro decisivo e l'ho sbagliato. Nella vita ho fallito molte volte. Ed è per questo che alla fine ho vinto tutto» - Michael Jordan

    «Prima ti ignorano, poi ti deridono, poi ti combattono. Poi vinci.» - Gandhi

  5. #5
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,704
    Originariamente inviato da Nuvolari2
    Ok, ho trovato un errore che ho commesso:

    il campo della tabella lo definivo come testo, invece che come numero.

    ora che l'ho valorizzato come numero, non appare più la finestrella ed effettivamente la funzione genera un numero random... ma quel numero random generato (sempre quello, lo stesso) lo mette in tutti i record!

    Io invece avrei bisogno che ogni singolo record avesse un numero random generato (non importa anche se ci sono eventuali doppi, l'importante è che ogni record abbia un numero casuale compreso in un determinato intervallo... per esempio fra 100 e 200).
    Allora usa una procedura tipo:
    codice:
    Dim mdatabase As DAO.Database
    Set mdatabase = CurrentDb
    Dim mrecord As DAO.Recordset
    Set mrecord = mdatabase.OpenRecordset("select * from tabella1")
                mrecord.MoveFirst
                Do Until mrecord.EOF
                With mrecord
                    .Edit
                    !numero = Int(Rnd * 100) + 100
                    .Update
                    .MoveNext
                    End With
                Loop
                Set mdatabase = Nothing
                Set mrecord = Nothing

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.