Newsgroup: it.comp.appl.access
Titolo: Aggiornare campo progressivo

Ciao e grazie per l'attenzione
Premetto che sono alle prime armi su access e su VBA.
Ho diverse tabelle con l'elenco di nominativi e un campo numerico su ogni
tabella.
Dovrei aggiornare il campo numerico, partendo da 0 a n mettendo i nomi in
ordine alfabetico.
Credo di doverlo fare in VBA, mi date una mano????
Grazie 1000
by Claudio

 ha scritto nel messaggio
news:9mfg8e$3kek$1...@stargate1.inet.it...

Se la tabella che contiene i dati si chiama Tabella1 ed ha la seguente
struttura:
ID            Contatore e chiave primaria
Prog         Numerico
Nome       Testo
Se il tuo problema è solo quello di cambiare i valori del campo Prog da 0 a
N in maniera che tenga conto dell'ordine alfabetico del campo Nome.
Io lo farei con una query di aggiornamento che abbia il seguente codice SQL:
UPDATE Tabella1 SET Tabella1.Prog = DCount("ID","Tabella1","Nome<" &
Chr$(34) & [Nome] & Chr$(34));
Il tutto funzionerà a condizione che non esistano record con Nomi uguali,
nel qual caso i due record avrebbero lo stesso numero progressivo.
Se invece il problema non è quello che ho capito io, forse è bene che posti
un esempio esplicativo.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


[CUT]
Non capisco perché non abbiamo continuato il nostro dialogo nel NG.
Probabilmente a te il valore di Prog resta sempre a zero in quanto non hai
scritto correttamente i nomi dei campi e/o della tabella nella DCount.
Se la struttura della tabella è quella da te indicata (senza una chiave
primaria di tipo contatore) e comunque si chiama Tabella1, con una query di
aggiornamento che ha il seguente codice SQL:
UPDATE Tabella1 SET Tabella1.Prog = DCount("Prog","Tabella1","Cognomenome<"
& Chr$(34) & [Cognomenome] & Chr$(34));
si ottiene l'aggiornamento del campo Prog in maniera che tenga conto
dell'ordinamento alfabetico del campo Cognomenome; la tabella non risulta
alla fine ordinata ma il campo Prog assume il valore che tu volevi.
Per scrupolo ho provato e a me funziona.
Resta il fatto che Prog è un campo calcolato, quindi eviterei di registrarlo
nella tabella; di fatto mi creerei una normale query di selezione che avesse
il seguente codice SQL:
SELECT DCount("Cognomenome","Tabella1","Cognomenome<" & Chr$(34) &
[Cognomenome] & Chr$(34)) AS Prog, Tabella1.Cognomenome
FROM Tabella1
ORDER BY Tabella1.Cognomenome;
=================================
----


 ORDER BY Tabella1.Cognomenome;
Uhm, la scelta tra le due possibilità, dipende da quanto spesso "consulta" i
dati e quanto spesso vengono inseriti nuovi record (o vengono modificati).
Ed anche dal numero di record che ci sono
In certi casi fare ogni volta la "SELECT DCount..." può risultare un po'
lento!
--
Massimo Di Bello
Prometheo
Corsi di Informatica in Franchising
http://www.prometheo.it/

 Massimo Di Bello
Secondo me, prima di memorizzare campi calcolati un una tabella, le provo
tutte. ;-)
Sono d'accordo con te che sono poche le regole che valgono comunque e a
prescindere dal progetto; ho potuto però constatare che alcune diminuzioni
di performance dovute all'uso di funzioni sui dominii non sono percepibili
dall'operatore, sopratutto grazie alla velocità degli attuali PC, dei loro
bus e dei loro dischi rigidi.
Sono sempre dell'avviso di provare e cambiare strada solo se necessario.


 tutte. ;-)
Concordo pienamente, sono comunque una cosa "pericolosa" per la coerenza del
database
per cui va ponderato attentamente quando utilizzare o meno campi calcolati
"memorizzati"
