Newsgroup: it.comp.appl.access
Titolo: Memorizzare una matrice in Access

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

 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/
---------------------------------------------------------------------------

 Dove Recordset rappresenta la Riga, è infatti indicizzato


 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
--------

 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.
-- 


 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.



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

 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.


 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.
-- 



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

 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


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