Discussione:
ciclo for each ... next
(troppo vecchio per rispondere)
l***@gmail.com
2008-09-10 22:52:23 UTC
Permalink
Ciao a tutti sono Stefano neofita di Access.
Avrei bisogno di una spiegazione. Ho qualche difficoltà a capire il
ciclo for each .... next.
Ho trovato vari esempi ma non mi è ben chiara la sintassi. Vi sarei
grato se qualcuno avesse un pò di tempo per spiegarmi come funziona
questo ciclo.

Nel mio caso specifico devo far apparire un msgbox quando il valore
della casella di testo (rimanenza), di una maschera continua, è <= 0.
Chiaramente la maschera restituisce svariati record.

Grazie a tutti.

Stefano
MA
2008-09-11 08:37:23 UTC
Permalink
Post by l***@gmail.com
Ciao a tutti sono Stefano neofita di Access.
Avrei bisogno di una spiegazione. Ho qualche difficoltà a capire il
ciclo for each .... next.
Ho trovato vari esempi ma non mi è ben chiara la sintassi. Vi sarei
grato se qualcuno avesse un pò di tempo per spiegarmi come funziona
questo ciclo.
Nel mio caso specifico devo far apparire un msgbox quando il valore
della casella di testo (rimanenza), di una maschera continua, è <= 0.
Chiaramente la maschera restituisce svariati record.
Grazie a tutti.
Stefano
Ciao i cicli sono delle operazioni ripetitive che lavorao fino al verificarsi di una determinata condizione
Puoi avere di tipo For o di tipo Do.
Con For hai For... Next e For each... Next: la differenza sta nel fatto che nel primo caso devi sapere di quanto incrementare il ciclo, nel secondo invece puoi non sapere e gli dici "per ciscuno di loro ... fai questo"
Esempi dell'uno e dell'altro: mettiamo che tu hai 10 etichette che si chiamano Etichetta1, Etichetta2 etc..
for i = 1 to 10
ctl("Etichetta" & i).caption = "ciao"
next
ma se per esempio si chiamano "Eti_Nome", "Eti_Cognome"
non puoi usarlo in quel modo e farai
for each ctl in me.controls
ctl.caption = "Ciao"
next
--
--
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
l***@gmail.com
2008-09-11 15:05:33 UTC
Permalink
Post by MA
Post by l***@gmail.com
Ciao a tutti sono Stefano neofita di Access.
Avrei bisogno di una spiegazione. Ho qualche difficoltà a capire il
ciclo for each .... next.
Ho trovato vari esempi ma non mi è ben chiara la sintassi. Vi sarei
grato se qualcuno avesse un pò di tempo per spiegarmi come funziona
questo ciclo.
Nel mio caso specifico devo far apparire un msgbox quando il valore
della casella di testo (rimanenza), di una maschera continua, è <= 0.
Chiaramente la maschera restituisce svariati record.
Grazie a tutti.
Stefano
Ciao i cicli sono delle operazioni ripetitive che lavorao fino al verificarsi di una determinata condizione
Puoi avere di tipo For o di tipo Do.
Con For hai For... Next e For each... Next: la differenza sta nel fatto che nel primo caso devi sapere di quanto incrementare il ciclo, nel secondo invece puoi non sapere e gli dici "per ciscuno di loro ... fai questo"
Esempi dell'uno e dell'altro: mettiamo che tu hai 10 etichette che si chiamano Etichetta1, Etichetta2 etc..
for i = 1 to 10
ctl("Etichetta" & i).caption = "ciao"
next
ma se per esempio si chiamano "Eti_Nome", "Eti_Cognome"
non puoi usarlo in quel modo e farai
for each ctl in me.controls
ctl.caption = "Ciao"
next
--
--
MAssimiliano Amendolawww.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
Grazie Massimiliano, ora mi è molto più chiara la cosa.
Ho cercato di applicarlo al mio caso scrivendo questo codice:

Dim ctl As Variant

For Each ctl In Me.rimanenza
If ctl.Text <= 0 Then
MsgBox "attenzione", vbDefaultButton1
Exit For
End If
Next


dove Me.rimanenza è una casella di testo

Però quando faccio girare il codice mi restituisce il seguente errore:
"Errore run time 438: Proprietà o metoto non supportati dall'oggetto.

Facendo il debug mi evidenzia in giallo: For Each ctl In Me.rimanenza,
e posizionando il mouse su "ctl" mi appare "ctl=vuoto"

E qua non riesco a venirne a capo. Immagino che vada dichiarato
qualcosa...
Ti sarei grato per un tuo aiuto.

Un saluto

Stefano
MA
2008-09-11 15:37:05 UTC
Permalink
Post by l***@gmail.com
Post by MA
Post by l***@gmail.com
Ciao a tutti sono Stefano neofita di Access.
Avrei bisogno di una spiegazione. Ho qualche difficoltà a capire il
ciclo for each .... next.
Ho trovato vari esempi ma non mi è ben chiara la sintassi. Vi sarei
grato se qualcuno avesse un pò di tempo per spiegarmi come funziona
questo ciclo.
Nel mio caso specifico devo far apparire un msgbox quando il valore
della casella di testo (rimanenza), di una maschera continua, è <=
0. Chiaramente la maschera restituisce svariati record.
Grazie a tutti.
Stefano
Ciao i cicli sono delle operazioni ripetitive che lavorao fino al
verificarsi di una determinata condizione
Puoi avere di tipo For o di tipo Do.
Con For hai For... Next e For each... Next: la differenza sta nel
fatto che nel primo caso devi sapere di quanto incrementare il
ciclo, nel secondo invece puoi non sapere e gli dici "per ciscuno di
loro ... fai questo" Esempi dell'uno e dell'altro: mettiamo che tu
hai 10 etichette che si chiamano Etichetta1, Etichetta2 etc..
for i = 1 to 10
ctl("Etichetta" & i).caption = "ciao"
next
ma se per esempio si chiamano "Eti_Nome", "Eti_Cognome"
non puoi usarlo in quel modo e farai
for each ctl in me.controls
ctl.caption = "Ciao"
next
--
--
MAssimiliano Amendolawww.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
Grazie Massimiliano, ora mi è molto più chiara la cosa.
Dim ctl As Variant
For Each ctl In Me.rimanenza
If ctl.Text <= 0 Then
MsgBox "attenzione", vbDefaultButton1
Exit For
End If
Next
dove Me.rimanenza è una casella di testo
"Errore run time 438: Proprietà o metoto non supportati dall'oggetto.
Facendo il debug mi evidenzia in giallo: For Each ctl In Me.rimanenza,
e posizionando il mouse su "ctl" mi appare "ctl=vuoto"
E qua non riesco a venirne a capo. Immagino che vada dichiarato
qualcosa...
Ti sarei grato per un tuo aiuto.
Un saluto
Stefano
Dunque se è text per capire se è vuoto devi mettere <>"" e non <=0
in ogni caso usa value non text
Poi ctl dichiaralo come Control e non come variant
--
--
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
l***@gmail.com
2008-09-11 15:43:53 UTC
Permalink
Post by MA
Post by l***@gmail.com
Post by MA
Post by l***@gmail.com
Ciao a tutti sono Stefano neofita di Access.
Avrei bisogno di una spiegazione. Ho qualche difficoltà a capire il
ciclo for each .... next.
Ho trovato vari esempi ma non mi è ben chiara la sintassi. Vi sarei
grato se qualcuno avesse un pò di tempo per spiegarmi come funziona
questo ciclo.
Nel mio caso specifico devo far apparire un msgbox quando il valore
della casella di testo (rimanenza), di una maschera continua, è <=
0. Chiaramente la maschera restituisce svariati record.
Grazie a tutti.
Stefano
Ciao i cicli sono delle operazioni ripetitive che lavorao fino al
verificarsi di una determinata condizione
Puoi avere di tipo For o di tipo Do.
Con For hai For... Next e For each... Next: la differenza sta nel
fatto che nel primo caso devi sapere di quanto incrementare il
ciclo, nel secondo invece puoi non sapere e gli dici "per ciscuno di
loro ... fai questo" Esempi dell'uno e dell'altro: mettiamo che tu
hai 10 etichette che si chiamano Etichetta1, Etichetta2 etc..  
for i = 1 to 10
ctl("Etichetta" & i).caption = "ciao"
next
ma se per esempio si chiamano "Eti_Nome", "Eti_Cognome"
non puoi usarlo in quel modo e farai
for each ctl in me.controls
ctl.caption = "Ciao"
next
--
--
MAssimiliano Amendolawww.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
Grazie Massimiliano, ora mi è molto più chiara la cosa.
Dim ctl As Variant
For Each ctl In Me.rimanenza
    If ctl.Text <= 0 Then
         MsgBox "attenzione", vbDefaultButton1
    Exit For
    End If
Next
dove Me.rimanenza è una casella di testo
"Errore run time 438: Proprietà o metoto non supportati dall'oggetto.
Facendo il debug mi evidenzia in giallo: For Each ctl In Me.rimanenza,
e posizionando il mouse su "ctl" mi appare "ctl=vuoto"
E qua non riesco a venirne a capo. Immagino che vada dichiarato
qualcosa...
Ti sarei grato per un tuo aiuto.
Un saluto
Stefano
Dunque se è text per capire se è vuoto devi mettere <>"" e non <=0
in ogni caso usa value non text
Poi ctl dichiaralo come Control e non come variant
--
--
MAssimiliano Amendolawww.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
fatto... però ora mi da lo stesso errore ma ctl=nothing.
Ho messo <=0 perchè non devo verificare se il campo è vuoto, ma se il
valore è negativo o uguale a 0.
In pratica la maschera riporta i dati di una query, quindi la casella
di testo rimanenza non è scrivibile.
A questo punto credo che il problema sia proprio questo...

Grazie ancora

Stefano
l***@gmail.com
2008-09-11 15:49:12 UTC
Permalink
Post by MA
Post by l***@gmail.com
Post by MA
Post by l***@gmail.com
Ciao a tutti sono Stefano neofita di Access.
Avrei bisogno di una spiegazione. Ho qualche difficoltà a capire il
ciclo for each .... next.
Ho trovato vari esempi ma non mi è ben chiara la sintassi. Vi sarei
grato se qualcuno avesse un pò di tempo per spiegarmi come funziona
questo ciclo.
Nel mio caso specifico devo far apparire un msgbox quando il valore
della casella di testo (rimanenza), di una maschera continua, è <=
0. Chiaramente la maschera restituisce svariati record.
Grazie a tutti.
Stefano
Ciao i cicli sono delle operazioni ripetitive che lavorao fino al
verificarsi di una determinata condizione
Puoi avere di tipo For o di tipo Do.
Con For hai For... Next e For each... Next: la differenza sta nel
fatto che nel primo caso devi sapere di quanto incrementare il
ciclo, nel secondo invece puoi non sapere e gli dici "per ciscuno di
loro ... fai questo" Esempi dell'uno e dell'altro: mettiamo che tu
hai 10 etichette che si chiamano Etichetta1, Etichetta2 etc..  
for i = 1 to 10
ctl("Etichetta" & i).caption = "ciao"
next
ma se per esempio si chiamano "Eti_Nome", "Eti_Cognome"
non puoi usarlo in quel modo e farai
for each ctl in me.controls
ctl.caption = "Ciao"
next
--
--
MAssimiliano Amendolawww.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
Grazie Massimiliano, ora mi è molto più chiara la cosa.
Dim ctl As Variant
For Each ctl In Me.rimanenza
    If ctl.Text <= 0 Then
         MsgBox "attenzione", vbDefaultButton1
    Exit For
    End If
Next
dove Me.rimanenza è una casella di testo
"Errore run time 438: Proprietà o metoto non supportati dall'oggetto.
Facendo il debug mi evidenzia in giallo: For Each ctl In Me.rimanenza,
e posizionando il mouse su "ctl" mi appare "ctl=vuoto"
E qua non riesco a venirne a capo. Immagino che vada dichiarato
qualcosa...
Ti sarei grato per un tuo aiuto.
Un saluto
Stefano
Dunque se è text per capire se è vuoto devi mettere <>"" e non <=0
in ogni caso usa value non text
Poi ctl dichiaralo come Control e non come variant
--
--
MAssimiliano Amendolawww.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
...

l***@gmail.com
2008-09-11 15:10:53 UTC
Permalink
Post by MA
Post by l***@gmail.com
Ciao a tutti sono Stefano neofita di Access.
Avrei bisogno di una spiegazione. Ho qualche difficoltà a capire il
ciclo for each .... next.
Ho trovato vari esempi ma non mi è ben chiara la sintassi. Vi sarei
grato se qualcuno avesse un pò di tempo per spiegarmi come funziona
questo ciclo.
Nel mio caso specifico devo far apparire un msgbox quando il valore
della casella di testo (rimanenza), di una maschera continua, è <= 0.
Chiaramente la maschera restituisce svariati record.
Grazie a tutti.
Stefano
Ciao i cicli sono delle operazioni ripetitive che lavorao fino al verificarsi di una determinata condizione
Puoi avere di tipo For o di tipo Do.
Con For hai For... Next e For each... Next: la differenza sta nel fatto che nel primo caso devi sapere di quanto incrementare il ciclo, nel secondo invece puoi non sapere e gli dici "per ciscuno di loro ... fai questo"
Esempi dell'uno e dell'altro: mettiamo che tu hai 10 etichette che si chiamano Etichetta1, Etichetta2 etc..
for i = 1 to 10
ctl("Etichetta" & i).caption = "ciao"
next
ma se per esempio si chiamano "Eti_Nome", "Eti_Cognome"
non puoi usarlo in quel modo e farai
for each ctl in me.controls
ctl.caption = "Ciao"
next
--
--
MAssimiliano Amendolawww.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
Grazie Massimiliano ora mi è molto più chiaro.
Ho provato a scrivere il seguente codice:

Dim ctl As Variant


For Each ctl In Me.rimanenza
If ctl.Text <= 0 Then
MsgBox "attenzione", vbDefaultButton1
Exit For
End If
Next

Quando lo eseguo mi restituisce il seguente errore: Errore di run-time
438: proprietà o metodo non supportati dall'oggetto.

Facendo il debug mi evidenzia in giallo la seguente riga: If ctl.Text
<= 0 Then, dicendomi che clt=vuoto.

E qua non ne vengo a capo.

Ti sarei grato se mi spiegassi dove sbaglio.

Un saluto

Stefano
Loading...