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

Memorizzare una matrice in Access

506 views
Skip to first unread message

Gio.Ve

unread,
Aug 21, 2004, 4:19:33 PM8/21/04
to
Ho bisogno di inserire una matrice di 7 righe e 3 colonne in una o più
tabelle di Access 2000.
Come posso fare?
E se tra qualche tempo le righe diventano 8?
Ringrazio anticipatamente quanti mi risponderanno.

GioVe


ALESSANDRO Baraldi

unread,
Aug 21, 2004, 5:10:43 PM8/21/04
to
"Gio.Ve" <nospamgv...@tin.it> ha scritto nel messaggio
news:p7OVc.131673$OR2.6...@news3.tin.it...
> Ho bisogno di inserire una matrice di 7 righe e 3 colonne in una o piů

> tabelle di Access 2000.
> Come posso fare?
> E se tra qualche tempo le righe diventano 8?
> Ringrazio anticipatamente quanti mi risponderanno.
>
> GioVe


[Risposta]

Le matrici si dimensionano cosě:

'//All'inizio del Modulo specifica
Option Base 1
Dim TuaMatrice(7,3)

'//Se non specifichi Option Base 1
'//la matrice parte da 0

Dim TuaMatrice(6,2)

E' importante sapere di che tipo sono i dati nella matrice
altrimenti saranno di tipo Variant(16Byte)

Dim TuaMatrice(6,2) as Integer '// Solo 2Byte

Se un domani avrai bisogni di altre righe o colonne:

ReDim TuaMatrice(99, 99) As Integer

-------------------------------------------------------

Ti ricordo che anche una Tabella č una Matrice, quindi se
devi poi salvare i dati in Tabella forse ti conviene usare
direttamente la Tabella.
E' un pň piů brigoso aggiungere Colonne, ma Righe direi
che č elementare.
Per vedere una Tabella come una Matrice puoi accedere
agli oggetti Recordset e Fields.
Dove Recordset rappresenta la Riga, č infatti indicizzato
e puoi spostarti sulla riga 10 con l'istruzione MoveTo.
Le colonne sono rappresentate dai Campi Fields(Index).

Leggi l'Help per qualsiasi dubbio.

Ciao.
--
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

Gio.Ve

unread,
Aug 21, 2004, 5:41:35 PM8/21/04
to

"ALESSANDRO Baraldi" <ik2...@libero.it> ha scritto nel messaggio
news:cg8dpk$bao$1...@lacerta.tiscalinet.it...

> "Gio.Ve" <nospamgv...@tin.it> ha scritto nel messaggio
> news:p7OVc.131673$OR2.6...@news3.tin.it...
> > Ho bisogno di inserire una matrice di 7 righe e 3 colonne in una o più

> > tabelle di Access 2000.
> > Come posso fare?
> > E se tra qualche tempo le righe diventano 8?
> > Ringrazio anticipatamente quanti mi risponderanno.
> >
> > GioVe
>
>
> [Risposta]
>
> Le matrici si dimensionano così:

>
> '//All'inizio del Modulo specifica
> Option Base 1
> Dim TuaMatrice(7,3)
>
> '//Se non specifichi Option Base 1
> '//la matrice parte da 0
>
> Dim TuaMatrice(6,2)
>
> E' importante sapere di che tipo sono i dati nella matrice
> altrimenti saranno di tipo Variant(16Byte)
>
> Dim TuaMatrice(6,2) as Integer '// Solo 2Byte
>
> Se un domani avrai bisogni di altre righe o colonne:
>
> ReDim TuaMatrice(99, 99) As Integer
>
> -------------------------------------------------------
>
> Ti ricordo che anche una Tabella è una Matrice, quindi se

> devi poi salvare i dati in Tabella forse ti conviene usare
> direttamente la Tabella.

E' proprio questo il problema.
Come si fa a inserire una matrice in una tabella?
La mia matrice ha per righe la data in cui sono cambiate e cambieranno le
aliquote Enasarco, per colonne la misura di tali aliquote.
Come creo praticamente la tabella che accoglierà questi dati?

> E' un pò più brigoso aggiungere Colonne, ma Righe direi
> che è elementare.


> Per vedere una Tabella come una Matrice puoi accedere
> agli oggetti Recordset e Fields.

> Dove Recordset rappresenta la Riga, è infatti indicizzato

Maurizio Borrelli

unread,
Aug 22, 2004, 1:42:24 AM8/22/04
to
"Gio.Ve" <nospamgv...@tin.it> ha scritto nel messaggio
news:p7OVc.131673$OR2.6...@news3.tin.it...
> Ho bisogno di inserire una matrice di 7 righe e 3 colonne in una o più
> tabelle di Access 2000.
> Come posso fare?
> E se tra qualche tempo le righe diventano 8?

Ciao, Gio.Ve.

Prima di preoccuparmi delle righe che diventeranno otto, io mi
preoccuperei di capire come mai attualmente sono sette.

Ovvero, dato che una matrice non ge'rmina spontaneamente, come mai e
perche' hai tale matrice? Da dove proviene? Chi o che cosa ha creato tale
struttura dati?

--
(Facci sapere se ed eventualmente come hai risolto. Grazie.)

Ciao :o)
Maurizio Borrelli, Microsoft MVP - Office Systems - Access
--------
?SPQR(C)
X
--------


Maurizio Borrelli

unread,
Aug 22, 2004, 1:56:13 AM8/22/04
to
"ALESSANDRO Baraldi" <ik2...@libero.it> ha scritto nel messaggio
news:cg8dpk$bao$1...@lacerta.tiscalinet.it...

> "Gio.Ve" <nospamgv...@tin.it> ha scritto nel messaggio
> news:p7OVc.131673$OR2.6...@news3.tin.it...
[...]

> Le matrici si dimensionano così:
> '//All'inizio del Modulo specifica
> Option Base 1
> Dim TuaMatrice(7,3)
>
> '//Se non specifichi Option Base 1
> '//la matrice parte da 0
>
> Dim TuaMatrice(6,2)
[...]

Ciao, @Alex.

Meglio di tutto sarebbe ignorare "Option Base" e prendere la buona
abitudine di dichiarare sempre esplicitamente i limiti, superiore e
inferiore. Tanto piu' che tali limiti possono essere non solo 0 o 1 ma un
qualsiasi numero intero nell'intervallo dei Long. Per esempio:

Dim TuaMatrice(-8 To 25, 31 To 32) As <...>

ovvero una matrice bidimensionale di:

UBound(TuaMatrice, 1) - LBound(TuaMatrice, 1) + 1

cioe' 34 elementi per:

UBound(TuaMatrice, 2) - LBound(TuaMatrice, 2) + 1

cioe' 2 elementi.

--

ALESSANDRO Baraldi

unread,
Aug 22, 2004, 3:06:33 AM8/22/04
to
> Meglio di tutto sarebbe ignorare "Option Base" e prendere la buona
> abitudine di dichiarare sempre esplicitamente i limiti, superiore e
> inferiore. Tanto piu' che tali limiti possono essere non solo 0 o 1 ma un
> qualsiasi numero intero nell'intervallo dei Long. Per esempio:
>
> Dim TuaMatrice(-8 To 25, 31 To 32) As <...>
>
> ovvero una matrice bidimensionale di:
>
> UBound(TuaMatrice, 1) - LBound(TuaMatrice, 1) + 1
>
> cioe' 34 elementi per:
>
> UBound(TuaMatrice, 2) - LBound(TuaMatrice, 2) + 1
>
> cioe' 2 elementi.
> Maurizio Borrelli, Microsoft MVP - Office Systems - Access

Ciao Maurizio.
Certo quello che dici è ineccepibile.
Ho evidenziato Option Base perchè è un errore tipico che viene
commesso, ovviamente la tua considerazione taglia ogni dubbio.

Gio.Ve

unread,
Aug 22, 2004, 4:20:33 AM8/22/04
to

"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:wyWVc.11426$B06....@news.edisontel.com...

> "Gio.Ve" <nospamgv...@tin.it> ha scritto nel messaggio
> news:p7OVc.131673$OR2.6...@news3.tin.it...
> > Ho bisogno di inserire una matrice di 7 righe e 3 colonne in una o più
> > tabelle di Access 2000.
> > Come posso fare?
> > E se tra qualche tempo le righe diventano 8?
>
> Ciao, Gio.Ve.
>
> Prima di preoccuparmi delle righe che diventeranno otto, io mi
> preoccuperei di capire come mai attualmente sono sette.
>
> Ovvero, dato che una matrice non ge'rmina spontaneamente, come mai e
> perche' hai tale matrice? Da dove proviene? Chi o che cosa ha creato tale
> struttura dati?
>
> --
> (Facci sapere se ed eventualmente come hai risolto. Grazie.)
>
Ciao Maurizio,

La mia matrice ha per righe la data in cui sono cambiate e cambieranno le
aliquote Enasarco, per colonne la misura di tali aliquote.
Come creo praticamente la tabella che accoglierà questi dati?
Questa matrice proviene da un articolo del Sole 24 Ore che riepiloga le
variazioni delle aliquote Enasarco.
La voglio memorizzare per offrire un utile promemoria agli utilizzatori
della mia procedura.
Esempio di tale matrice:
...
dall'1/7/1998 le aliquote sono 5,75 5,75 11,50
dall'1/1/2004 le aliquote sono 6,25 6,25 12,50
ecc.
In realtà la 1a e la 2a colonna sono sempre uguali, mentre la 3a non è altro
che la somma delle prime due.

Ciao
GioVe


ALESSANDRO Baraldi

unread,
Aug 22, 2004, 4:24:13 AM8/22/04
to
"Gio.Ve" <nospamgv...@tin.it> ha scritto nel messaggio
news:lHYVc.169258$5D1.8...@news4.tin.it...

Se le metti in EXCEL oppure in un foglio di Testo tipo Notepad
poi le importi in Access con la procedura guidata fai tutto.
Se la 1° e la 2° colonna sono = una delle 2 forse non serve.
Per la 3° essendo frutto di un calcolo non si deve inserire
nella tabella, ma nella Maschera che userai per visualizzare
inserirai un Controllo(non un campo) Calcolato.

Maurizio Borrelli

unread,
Aug 22, 2004, 7:07:39 AM8/22/04
to
"Gio.Ve" <nospamgv...@tin.it> ha scritto nel messaggio
news:lHYVc.169258$5D1.8...@news4.tin.it...

> "Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel
messaggio
> news:wyWVc.11426$B06....@news.edisontel.com...
> > "Gio.Ve" <nospamgv...@tin.it> ha scritto nel messaggio
> > news:p7OVc.131673$OR2.6...@news3.tin.it...
> > > Ho bisogno di inserire una matrice di 7 righe e 3 colonne in una o più
> > > tabelle di Access 2000.
> > > Come posso fare?
> > > E se tra qualche tempo le righe diventano 8?
> > Prima di preoccuparmi delle righe che diventeranno otto, io mi
> > preoccuperei di capire come mai attualmente sono sette.
> > Ovvero, dato che una matrice non ge'rmina spontaneamente, come mai e
> > perche' hai tale matrice? Da dove proviene? Chi o che cosa ha creato
tale
> > struttura dati?
> La mia matrice ha per righe la data in cui sono cambiate e cambieranno le
> aliquote Enasarco, per colonne la misura di tali aliquote.
> Come creo praticamente la tabella che accoglierà questi dati?
> Questa matrice proviene da un articolo del Sole 24 Ore che riepiloga le
> variazioni delle aliquote Enasarco.
> La voglio memorizzare per offrire un utile promemoria agli utilizzatori
> della mia procedura.
> Esempio di tale matrice:
> ...
> dall'1/7/1998 le aliquote sono 5,75 5,75 11,50
> dall'1/1/2004 le aliquote sono 6,25 6,25 12,50
> ecc.
> In realtà la 1a e la 2a colonna sono sempre uguali, mentre la 3a non è
altro
> che la somma delle prime due.

Ciao, GioVe.

Ecco, appunto!... Non ci hai ancora detto chi ha creato tale matrice,
ovvero chi ha deciso che la matrice debba essere... una matrice.

Se la decisione l'hai presa tu... e se nessuno ti obbliga a gestire tali
dati con una matrice, perche' non consideri di eliminare la matrice e
gestire quei dati con una tabella?

Un'altra cosa non mi e' chiara. Posto che tu abbia una matrice, chi
popola tale matrice? Tu copi i dati dal Sole 24 Ore, ok. Ma quando li copi
dove li scrivi?

Ho anche il sospetto che quando tu parli di "matrice" intendi una cosa
diversa da cio' che intendiamo @Alex ed io. Noi ci riferiamo ad una ben
precisa struttura dati di Visual Basic. Tu forse usi la parola "matrice" in
senso generico, per definire un insieme di dati in righe e colonne.

Aiutaci a capire.

--

Gio.Ve

unread,
Aug 22, 2004, 8:53:25 AM8/22/04
to
> Ecco, appunto!... Non ci hai ancora detto chi ha creato tale matrice,
> ovvero chi ha deciso che la matrice debba essere... una matrice.
>
> Se la decisione l'hai presa tu... e se nessuno ti obbliga a gestire
tali
> dati con una matrice, perche' non consideri di eliminare la matrice e
> gestire quei dati con una tabella?
>
> Un'altra cosa non mi e' chiara. Posto che tu abbia una matrice, chi
> popola tale matrice? Tu copi i dati dal Sole 24 Ore, ok. Ma quando li copi
> dove li scrivi?
>
> Ho anche il sospetto che quando tu parli di "matrice" intendi una cosa
> diversa da cio' che intendiamo @Alex ed io. Noi ci riferiamo ad una ben
> precisa struttura dati di Visual Basic. Tu forse usi la parola "matrice"
in
> senso generico, per definire un insieme di dati in righe e colonne.
>
> Aiutaci a capire.
>
> --
> Ciao :o)
> Maurizio Borrelli, Microsoft MVP - Office Systems - Access
> --------
> ?SPQR(C)
> X
> --------
>
Esatto, io intendo per matrice un insieme di dati in righe e colonne.
Voglio gestire i dati con una tabella, ma non so come crearla.
Precisamente, visto che la matrice la posso ridurre a 7 righe e 1 colonna,
come chiamo il campo che memorizzerà le varie percentuali Enasarco?
Inserisco come nome del campo la data di variazione delle aliquote? E poi,
come faccio ad avere una stampa che mi riporti la data (che è il nome del
campo, non il suo contenuto) e l'aliquota in esso memorizzata?
In termini generali, come si crea una tabella destinata a memorizzare un
insieme di dati in righe e colonne? Si creano 2 tabelle, una che ospita i
dati delle righe e una che ospita i dati delle colonne e poi si visualizza
il tutto con una query a campi incrociati o con una tabella pivot?
Spero di riuscire a farmi capire, mi è molto difficile descrivere il mio
dubbio.

GioVe

Maurizio Borrelli

unread,
Aug 22, 2004, 10:00:11 AM8/22/04
to
"Gio.Ve" <nospamgv...@tin.it> ha scritto nel messaggio
news:9H0Wc.133162$OR2.6...@news3.tin.it...
[...]

> > Ho anche il sospetto che quando tu parli di "matrice" intendi una
cosa
> > diversa da cio' che intendiamo @Alex ed io. Noi ci riferiamo ad una ben
> > precisa struttura dati di Visual Basic. Tu forse usi la parola "matrice"
> > in senso generico, per definire un insieme di dati in righe e colonne.
[...]

> Esatto, io intendo per matrice un insieme di dati in righe e colonne.
> Voglio gestire i dati con una tabella, ma non so come crearla.
> Precisamente, visto che la matrice la posso ridurre a 7 righe e 1 colonna,
> come chiamo il campo che memorizzerà le varie percentuali Enasarco?
> Inserisco come nome del campo la data di variazione delle aliquote? E poi,
> come faccio ad avere una stampa che mi riporti la data (che è il nome del
> campo, non il suo contenuto) e l'aliquota in esso memorizzata?
> In termini generali, come si crea una tabella destinata a memorizzare un
> insieme di dati in righe e colonne? Si creano 2 tabelle, una che ospita i
> dati delle righe e una che ospita i dati delle colonne e poi si visualizza
> il tutto con una query a campi incrociati o con una tabella pivot?
> Spero di riuscire a farmi capire, mi è molto difficile descrivere il mio
> dubbio.

Ciao, GioVe.

Ok. Ora la questione mi sembra piu' chiara.

Considera prima di tutto che una tabella (di access) e' una matrice, una
matrice come la intendi tu, come la si intende nel parlare comune. Proprio
un insieme di righe e colonne. Le colonne si chiamano campi, le righe
record.

La tua tabella quindi e' destinata a conservare lo storico delle
aliquote (enasarco). Perche' allora non chiamarla "ENASARCO Storico"? O
qualcosa del genere?

Ogni record conterra' tutte le informazioni relative ad una variazione.
Quali sono queste informazioni? Ci hai parlato di una data (di entrata in
vigore, suppongo) e di due aliquote, delle quali non mi sembra tu ci abbia
detto il "nome" o descrizione. Mettiamo si chiamino Aliquota1 e Aliquota2.
Quindi la tua tabella "ENASARCO Storico" possiedera' i campi:

DataInizio, di tipo data/ora
Aliquota1, di tipo numerico singolo
Aliquota2, di tipo numerico singolo

Non sono necessari altri campi in quanto otterrai la somma Aliquota1 +
Aliquota2 per mezzo di una query.

Per ora mi fermo qui. Penso anche che dovrebbe esserti utile leggere il
seguente capitolo della "Guida in linea di Microsoft Access":

Creazione e utilizzo di database

Gio.Ve

unread,
Aug 22, 2004, 1:39:33 PM8/22/04
to
CUT
Grazie Maurizio per la tua pazienza, una cosa così semplice era diventata
per me un problema.
Non ragionavo più, mi ero convinto che per gestire le matrici ci fosse
bisogno di chissà quale programmazione.
Scusami ancora.

GioVe


0 new messages