Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Come ordinare in automatico i campi delle tabelle?

641 views
Skip to first unread message

LEOrap

unread,
Jul 17, 2008, 10:57:03 AM7/17/08
to
Salve al NG.

Premesso che ho dato uno sguardo sull NG ma non ho trovato nulla, neanche
sul
vostro sito (ben fatto) http://www.sitocomune.com/.

Ho una tabella in Access 2003 (di cirda un 13.000 record...) così composta:

[Contatore]
[Dato A]
[Dato B]
etc...

Ora, aggiungendo un record nuovo, tale record viene posizionato
"fisicamente" (?)
in fondo al tabellone.

Devo invece posizionare tale record ordinandolo in modo alfabetico per il
[Dato A]
"correggendo" quindi la numerazione del [contatore]

Premesso che l'aggiunta dei record è un'evento raro nel contesto di questo
MDB,
devo comunque eseguire la procedura che descrivo qua in seguito.


A mano, in modo che mi rendo conto essere un po "stupido" (?), ma che
comunque
raggiunge il mio scopo, devo seguire questa procedura...:

1) devo crearmi un campo nuovo: [Contatore provvisorio]

2) Fare ordinamento crescente sulla colonna [Dato A]...

3) Posizionarmi su [Contatore provvisorio] ed immettere il numero 1

4) Mettere un peso sul tasto "giù" ed attendere una decina di minuti che
access
rinumeri in modo crescente il [Contatore provvisorio].

5) una volta arrivato "sul fondo" si ferma da solo, quindi passo la
proprietà
contatore da [Contatore] a [Contatore provvisorio] per poi rinominare
quest'ultimo...

So che per voi sta procedura sembrerà una bestemmia... ;°°}
Sapreste indicarmi una maschera/macro da usare pari-pari (rinominandomi
gli eventuali campi) per fare il tutto in modo automatico ed un po più
"bello" ^_^

Vi ringrazio.

--
A.GiovanniB.


LEOrap

unread,
Jul 17, 2008, 10:58:24 AM7/17/08
to
Azz, scusate la formattazione del post, OE me l'ha
scombussolata, grrr...

--
A.GiovanniB.


cosi...@gmail.com

unread,
Jul 17, 2008, 11:12:36 AM7/17/08
to

Veramente più che una bestemmia non si capisce bene cosa
devi fare, perchè non ci spieghi per bene qual'è l'analisi del
problema invece della procedura

AleC

unread,
Jul 17, 2008, 11:13:50 AM7/17/08
to
On 17 Lug, 16:58, "LEOrap" <leorapm...@hotmail.com> wrote:
immagino che il campo denominato [contatore] non sia un campo di tipo
"contatore" ma numerico

dim rst as dao.recordset
dim cnt as long
set rst = currentdb.openrecordset("select * from nometabella order by
[Dato A];")
rst.movefirst
cnt = 1
do while not rst.eof
rst!Contatore = cnt
rst.movenext
cnt = cnt + 1
loop

se il campo denominato [Contatore] è un campo di tipo "contatore"
crei un nuovo campo denominandolo come ti pare e nel codice
sostituisci rst!Contatore con rst!nuovocampo

al...@libero.it

unread,
Jul 17, 2008, 11:22:16 AM7/17/08
to
On 17 Lug, 16:58, "LEOrap" <leorapm...@hotmail.com> wrote:

Non credo di aver capito:
domande:
1) lavori direttaemtne con la tabella (niente maschera?)
2) esistono i tasti A->Z Z->A ....
3) ma se sono già ordinati per dato A se aggiungi un nuovo record,
chiudi la tabella e la riapri non te lo ritrovi ordinato per [Dato
A]??

F.

LEOrap

unread,
Jul 17, 2008, 11:54:55 AM7/17/08
to
<cosi...@gmail.com> ha scritto nel messaggio
news:34282bfd-ca0f-4319...@e53g2000hsa.googlegroups.com...

On 17 Lug, 16:58, "LEOrap" <leorapm...@hotmail.com> wrote:
> non si capisce bene cosa devi fare, perchè non ci spieghi per bene
> qual'è l'analisi del problema invece della procedura

Ci provo ^_^


1) Mettere in ordine alfabetico 1 campo:
Esempio ordinare il campo NOME:

2) Creare un campo nuovo e numerarlo in ordine crescente.


Cioè se ho una tabella così

[NOME]
Luca
Alberdo
Paolo
Dario

Ordinare tutti i record in ordine alfabetico del campo NOME:

[NOME]
Alberto
Dario
Luca
Paolo

Quindi ora creare un nuovo campo NUMERI e numerare in ordine
crescente

[NOME] [NUMERI]
Alberto 1
Dario 2
Luca 3
Paolo 4


--
A.GiovanniB.


LEOrap

unread,
Jul 17, 2008, 12:00:35 PM7/17/08
to
<al...@libero.it> ha scritto nel messaggio
news:60bc1f99-9bed-4cc2...@d1g2000hsg.googlegroups.com...

On 17 Lug, 16:58, "LEOrap" <leorapm...@hotmail.com> wrote:
> 1) lavori direttaemtne con la tabella (niente maschera?)

Visto la rarità delle modifiche che devo farci, si, anche perchè
per l'appunto non sapevo neanche come mettere in ordine
la tabella. (L'ordine corretto mi serve direttamente in tabella,
non in maschera)

> 2) esistono i tasti A->Z Z->A ....

Non ho capito... ;-/

> 3) ma se sono già ordinati per dato A se aggiungi un nuovo record,
> chiudi la tabella e la riapri non te lo ritrovi ordinato per [Dato A]??

Se nel campo [Dato A]
Ho questa situazione

Record1 Dario
Record2 Tommaso

Se devo mettere Marco

Marco finirà nel Record3, se poi ordino per nome il campo [Dato A],
a VIDEO me lo ordina,

Record1 Dario
Record2 Marco
Record3 Tommaso

ma "fisicamente" l'ultimo record rimane in fondo...

Se poi accedo al Record3 tramite programma, non troverò Tommaso,
ma Marco (essendo questo l'ultimo che ho aggiunto sul record3...)

--
A.GiovanniB.


LEOrap

unread,
Jul 17, 2008, 12:06:21 PM7/17/08
to
"LEOrap" <leora...@hotmail.com> ha scritto nel messaggio
news:487f6ca4$0$40314$4faf...@reader5.news.tin.it...

> Record1 Dario
> Record2 Marco
> Record3 Tommaso
>
> ma "fisicamente" l'ultimo record rimane in fondo...
>
> Se poi accedo al Record3 tramite programma, non troverò Tommaso,
> ma Marco (essendo questo l'ultimo che ho aggiunto sul record3...)

Dimenticavo di dire (in risposta a te)
Di Marco posso averne vari, per quello che DEVO avere un campo
univoco numerico/Contatore.
Proprio per distinguerli sicuramente (confrontare gli altri campo verrebbe
una tragedia)... son quasi 50MB di sola tabellona ^_^

--
A.GiovanniB.


Fair87

unread,
Jul 17, 2008, 12:10:09 PM7/17/08
to
LEOrap ha scritto:
Forse sparo una sciapata, ma le tabelle....cosa serve ordinarle? Esistono maschere e query apposta per avere tabelle nn ordinate.....Crei una maschera su una query ordinata sulla tabella che ti serve......funzionano così i database.....metti caso che tra un anno hai la necessità di inserire un dato 'tra' quelli già inseriti, che fai? Rinumeri tutto da capo?


--
Questo articolo e` stato inviato dal sito web http://www.nonsolonews.it

LEOrap

unread,
Jul 17, 2008, 12:28:28 PM7/17/08
to
"Fair87" <roby...@gmail.com> ha scritto nel messaggio
news:g5nqt1$r5e$1...@news.nonsolonews.it...

> Forse sparo una sciapata, ma le tabelle....cosa serve ordinarle?
> Esistono maschere e query apposta per avere tabelle nn ordinate...

La storia di questo MDB è lunga e tormentata...

Il "programma" (query, forms, macro ed in minima parte codice)

Attinge in questa tabellona prelevando i dati in 2 momenti diversi...

Questi dati vengono prima scelti prendendo nota del numero di record in cui
si trovano, DOPO, durante il programma, vengono presi e COPIATI per usarli,
facendo appunto riferimento al record selezionato in precedenza...

Esempio:
Scelgo il nome "Marco" presente sul record 100 che ha delle determinate
caratteristiche (una 50ina di campi)...

Durante il programma, vado a prendere i dati di quel "Marco" presenti
i quel determinato record numero 100 che avevo scelto all'inizio...

> ..Crei una maschera su una query ordinata sulla tabella che ti serve...
> ...funzionano così i database...

Lo so...

> ..metti caso che tra un anno hai la necessità di inserire un dato 'tra'
> quelli
> già inseriti, che fai? Rinumeri tutto da capo?

Ehm, AHIME', yes...
La rinumerazione l'ho spiegata, così com'è funziona senza problemi,
è che masticando poco di programmazione, se non a livelli molto
elementari, il dover lasciare un peso su un tasto del pc per far si che
si autonumeri non è "molto igienico" ^_^

Vorrei automatizzare la procedura...

1) Crea campo "A" in tabella
2) ordina record tabella in ordine alfabetico di un determinato campo "B"
3) numera (con un loop) da 1 alla fine dei record il campo "A"
4) imposta in campo "A" contatore.
5) Cancella un campo "C"

E' che volevo evitarmi quelle 2-3ore di bestemmie, che magari voi che
ci lavorate da tempo mi scrivete in 10secondi quelle 10-15 righe
di codice da sbattere in una form ;°°}

--
A.GiovanniB.


Carlo Costarella

unread,
Jul 17, 2008, 12:52:20 PM7/17/08
to

"LEOrap" <leora...@hotmail.com> ha scritto nel messaggio
news:487f5dc1$0$40308$4faf...@reader5.news.tin.it...

> Salve al NG.
>
> Premesso che ho dato uno sguardo sull NG ma non ho trovato nulla, neanche
> sul
> vostro sito (ben fatto) http://www.sitocomune.com/.
>
> Ho una tabella in Access 2003 (di cirda un 13.000 record...) così
> composta:
>
> [Contatore]
> [Dato A]
> [Dato B]
> etc...
>
cut

Crea una tabella di appoggio identica alla prima.
Con la tabella "vecchia" crea una query di accodamento ricordandoti di
ordinare crescente la colonna che ti serve e di NON accodare nulla nel campo
contatore. La tabella a cui accodare sarà la "nuova". Esegui la query.
Ora la nuova tabella avrà i dati ordinati e con il progressivo anch'esso
ordinato.
Puoi rinominare la vecchia e dare il vecchio nome alla nuova. Occhio alle
relazioni.

Ciao, Carlo


LEOrap

unread,
Jul 17, 2008, 2:03:34 PM7/17/08
to
"AleC" <alessandr...@novameta.it> ha scritto nel messaggio
news:36d40e3c-807e-4c2f...@26g2000hsk.googlegroups.com...

>dim rst as dao.recordset
>dim cnt as long
>set rst = currentdb.openrecordset("select * from nometabella order by
>[Dato A];")
>rst.movefirst
>cnt = 1
>do while not rst.eof
> rst!Contatore = cnt
> rst.movenext
> cnt = cnt + 1
>loop

Ottimo!
Alla fine č un banale:
-Imposta variabili
-fai girare in loop fino a che...

Avevo fatto qualcosa del genere alle superiori qualche anno fa,
e non usandolo mai, oltre a non conoscere molto il linguaggio
programmazione, m'ero perso.
Perfetto, unica cosa (causa errori e l'help F1), ho dovuto aggiungere
edit/update prima dell'immissione dei valori nella cella (giusto?):

rst.Edit
rst!Contatore = cnt
rst.Update

Per il resto č proprio quel che cercavo, ed ovviamente cosě in
manco 1 secondo m'ha fatto il tutto (ben 29.250 record) senza
dover usar il metodo "spannometrico" da 6-7minuti ^_^

Grazie per la soluzione (banale forse, ma se uno non la sa... ;-P)
E pure agli altri per avermi dedicato del tempo.

--
A.GiovanniB.


LEOrap

unread,
Jul 17, 2008, 2:05:29 PM7/17/08
to
"Carlo Costarella" <carloantoni...@gmail.com> ha scritto nel
messaggio news:g5ntc5$j7d$1...@tdi.cu.mi.it...

> Crea una tabella di appoggio identica alla prima.
[CUTTONE]

Grazie per la dritta,
ho risolto con il consiglio di AleC
banale o no, a ricordarselo ^_^

--
A.GiovanniB.


Fair87

unread,
Jul 17, 2008, 3:06:03 PM7/17/08
to
LEOrap ha scritto:
Per me nn è una gran soluzione.....mi dici perchè vuoi il contatore 'in ordine'? Puoi sempre aggiungere un campo numerico in + e cambiare quello....in teoria l'ID serve al database, nn a noi.....

LEOrap

unread,
Jul 18, 2008, 2:07:04 AM7/18/08
to
"Fair87" <roby...@gmail.com> ha scritto nel messaggio
news:g5o56q$v7f$1...@news.nonsolonews.it...

> mi dici perchè vuoi il contatore 'in ordine'?

Perchè così mi tiene correttamente in ordine i record a livello
tabella... ;-/
Siccome il "databasone" vien usato anche da "vecchietti" che se nelle
maschere si trovano in record 10, nella tabella si aspettano di trovarlo
sempre in posizione 10, se glielo ordino solo in maschera "si perdono"
^_^

--
A.GiovanniB.


AleC

unread,
Jul 18, 2008, 2:57:56 AM7/18/08
to
>
>  rst.Edit
>     rst!Contatore = cnt
>  rst.Update
>

ooooops.... :-)

Fair87

unread,
Jul 19, 2008, 7:24:34 AM7/19/08
to
LEOrap ha scritto:

>"Fair87" <roby...@gmail.com> ha scritto nel messaggio
>news:g5o56q$v7f$1...@news.nonsolonews.it...
>> mi dici perchč vuoi il contatore 'in ordine'?
>
>Perchč cosě mi tiene correttamente in ordine i record a livello

> tabella... ;-/
>Siccome il "databasone" vien usato anche da "vecchietti" che se nelle
> maschere si trovano in record 10, nella tabella si aspettano di trovarlo
> sempre in posizione 10, se glielo ordino solo in maschera "si perdono"
> ^_^
>
Ma l'utente le tabelle nn dovrebbe neanche vederle......
0 new messages