Newsgroup: it.comp.appl.access
Titolo: matrice controlli

scusate prima di tutto per aver inviato un messaggio incomprensibile, ma mi
è partito per errore... cmq
Ricapitolo ...
ho una tabella con diverse colonne che chiamo per semplicità
C1,C2,C3,C4,...Cn
devo scrivere un algoritmo che deve generare una sequenza di n
operazioni, in base al dato presente nel campo delle colonne.
Ad esempio se nella prima riga nella colonna C1 ho un valore 4 allora
l'algoritmo deve generare 4 operazioni.
Poi passo alla colonna c2 se qui ho 3 l'algoritmo fa tre operazioni ...fino
alla colonna Cn
Finita la prima riga passo alla seconda riga e il gioco si ripete.
ho risolto il problema scrivendo lo stesso algoritmo tante volte quante
sono le colonne in altre parole ripeto n volte lo stesso codice.
Funziona ma è troppo complesso da gestire cioè se faccio una mdifica la
devo ripetere n volte.
La mia domanda è si può ottimizzare il codice utilizzando un for i =1 to n?
se si come faccio a indicizzare le colonne?
In visual basic mi ricordo che potevo creare una matrice di controlli ma mi
sembra che con access non sia proprio possibile.
Scusate ancora per il primo messaggio.
spero di essere stato chiaro e grazie in anticipo per le risposte.

 ha scritto nel messaggio
news:1ezupobz5z34s.1...@40tude.net...

E' relativamente possibile anche in VBA, ma non si continua a capire cosa
devi fare...
Perchè parli di controlli se stai lavorando sulla Tabella...?
Perchè mai poi dovresti eseguire del codice N volte...? Non è possibile che
tu stia sbagliando qualche
considerazione(che non ci esponi)...?
Prova a spiegarci anche lo scopo globale e non solo questo pezzetto che
soddisfa il tuo modo di vedere, a mio avviso molto contorto...!
In ogni caso non hai bisogno di controlli in quanto aprendo un Recordset
sulla tabella
hai a disposizione la Collection FIELDS che enumera le colonne, quindi
recuperi il valore e
con quello eventualmente fai il tuo ciclo N volte...
Il codice sotto funziona solo se la Tabella è strutturata come hai detto...!
' STRUTTURA = C1,C2,C3,C4,...Cn
Dim fld As DAO.Field
Dim rs  As DAO.Recordset
Dim x as Long
Set rs=CurrentDb.OpenRecordset("NomeTabella")
Do until rs.EOF
     For each fld in rs.Fields
           For x=1 to fld.Value
                  ' Esegui la Funzione
           Next
     Next
     rs.MoveNext
Loop
La cosa mi sembra semplice vista così... ma stranamente incomprensibile la
ripetizione
N volte di una qualsivoglia funzione....
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------



Grazie per aver risposto prima di tutto
in effetti sono stato un po troppo contorto, nonostante questo hai capito
perfettamente il mio problema e mi hai dato la soluzione che cercavo...sei
un mito!!!
Grazie ancora.
 

Il Thu, 12 Jul 2007 00:23:12 +0200, ALESSANDRO Baraldi ha scritto:

Grazie!!!
comunque Ale il mio problema era quello di avere in una tabella ordine
cliente Con le seguenti colonne 
 codice articolo|Taglia 38|........|Taglia 51|
per ogni articolo e per ogni taglia ho delle quantità
il mio problema era quello di creare una tabella sorgente per la stampa
dell'etichette 
tale  tabella  deve avere tante righe per quante etichette devo stampare il
che significa accodare tanti record dello stesso articolo per le quantità
di ciascuna taglia
Risultato
Codice Taglia
aaaaa	38
aaaaa	38
aaaaa	38
aaaaa	38
aaaaa	39
aaaaa	39
aaaaa	39
....
aaaaa	51
sono stato un po + chiaro?
cmq la tua risposta è stata + che esauriente provo e poi ti faccio sapere
ps ma se devo cominciare a eseguire la funzione dal secondo campo e non dal
primo come hai scritto tu come faccio?

 
puoi controllare il nome del campo (colonna) ed eventualmente scartarlo
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\


dim idx, idy, indmax
idx = numerocampo (i.e. se il primo camp da valutare e' il C5 idx = 5)
indmax = nn (i.e. il numero dell'ultimo campo da esaminare se C99 indmax 
e' 99)
Do until rs.EOF
      For idy = idx to indmax
            For x=1 to fields("C" & idy).value
                   ' Esegui la Funzione
            Next
      Next
      rs.MoveNext
Loop
-- 
ac
y-1=x

 - Mostra testo tra virgolette -
Dim fld As DAO.Field
Dim rs  As DAO.Recordset
Dim x as Long
Set rs=CurrentDb.OpenRecordset("NomeTabella")
Do until rs.EOF
     For each fld in rs.Fields
           If fld.OrdinalPosition>1 then
                  For x=1 to fld.Value
                        ' Esegui la Funzione
                  Next
           End If
     Next
     rs.MoveNext
Loop
@Alex



Grazie a tutti.. siete davvero splendidi.!!!