sto provando a realizzare un progetto in access mediante vba, ma sto incontrando molte difficoltà dal momento che da poco ho iniziato il suo studio e non riesco a realizzare le cose più semplici.
Ho importato un txt in una tabella, ARCHIVIO, con i seguenti campi:
ID NC DATA n1 n2 n3 .... n9 n10
poi ho costruito una seconda tabella, SOMME, con gli stessi campi della precedente ed aggiungendo un campo finale che deve contenere le somme dei valori dei campi per ciascun records.
manipolando una macro di flash sono riuscito a creare la tabella SOMME:
- Codice: Seleziona tutto
Private Sub Form_Load()
Dim criterio As String
Set db = CurrentDb
Set db = CurrentDb
Set ds = db.OpenRecordset("SELECT Count(DATA) AS Conteggio FROM ARCHIVIO")
URA = ds!conteggio
ds.Close
criterio = "INSERT INTO SOMME (DATA, NC, n1, n2, n3, n4, n5, n6,n7,n8,n9,n10) "
criterio = criterio & "SELECT Dateserial(Mid(DATA,7,4),Mid(DATA,4,2), Mid(DATA,1,2)), NC, n1, n2, n3, n4, n5, n6,n7,n8,n9,n10 "
criterio = criterio & "FROM ARCHIVIO"
db.Execute criterio
db.Close
End Sub
mi sono bloccato poichè non riesco a calcolare le somme dei campi, n1...n10, e ad inserire i valori nel campo somma della tabella SOMME;
ho provato a completare con il seguente codice:
- Codice: Seleziona tutto
Private Sub Comando0_Click()
Dim S As Integer
Set db = CurrentDb
S = DSum("[n1]", "[SOMME]", "[n2]")
End Sub
Ma nonostante giorni di lettura su argomenti relativi non riesco ad andare oltre le linee di codice che ho scritto.
ho poi realizzato, con la macro Form_Load, una terza tabella,SOMMAmin_max, con gli stessi campi della tabella ARCHIVIO, ed aggiungendo alla fine altri 2 campi, somma min e somma max.
Per determinare i valori da inserire nei campi, somma min e somma max devo procedere in questo modo:
1) consideriamo il primo record della tabella ARCHIVIO, ed i suoi campi n1...n10;
2) eliminiamo, solo momentaneamente, da tutti i campi, n1...n10, dei records successivi i valori uguali a quelli dei campi del primo record;
3) calcoliamo le somme, in orizzontale, dei valori nei campi di ciascun records, escludendo quei records che hanno campi, n1...n10, tutti vuoti e quei records in cui non ci sono campi vuoti.
4) inseriamo i valori min e max di tali somme nei campi, somma min e somma max, della tabella SOMMAmin_max in corrispondenza del records esaminato, primo record;
5) ripristiniamo la tabella ARCHIVIO con tutti i suoi valori iniziali;
consideriamo il record successivo, 2° record;
ripetiamo il calcolo dal punto 2) eliminando i valori a partire dal primo record e poi da quelli successivi al secondo fino all’ultimo;
calcoliamo le somme come al punto 3);
4) inseriamo i valori min e max di tali somme nei campi, somma min e somma max, della tabella SOMMAmin_max in corrispondenza del records esaminato, secondo record;
ripetiamo il punto 5);
passiamo al terzo record, e così fino all'ultimo records contenuto fino a quel momento nella tabella ARCHIVIO.
Se la tabella ARCHIVIO, contiene inizialmente 10 records ad esempio, e successivamente ne aggiungiamo-accodiamo altri 5, è inutile ripetere il calcolo per i primi 10, calcolo già eseguito in precedenza, ma è sufficiente eseguire il calcolo:
1) eliminando i valori dei primi 10 dagli ultimi 5, ed aggiornare i valori nei campi somma min e somma max, della tabella SOMMAmin_max in corrispondenza di ciascun records;
2) eseguire il calcolo degli ultimi 5 con tutti i rimanenti 14 records presenti in tabella, ed aggiungere i nuovi risultati nei campi precedenti in corrispondenza di ciascun dei 5 records.
Spero vivamente nei vostri contributi o suggerimenti perché, da solo, non so come poter realizzare diversamente questo progetto.
saluti e grazie