Newsgroup: it.comp.appl.access
Titolo: Un codice pigro su maschera, funziona da f8 ma non dal clic evento...

In una maschera ho dieci caselle Ordi2011.....Ordi2020 che conteggiano come da formula:
=Conteggio(IIf([Anno]=2011;[IMPORTOOrdinativo]))
e dieci caselle Buo2011....Buo2020 con la seguente formula:
=Conteggio(IIf([Anno]=2011;[IMPORTOBuono]))
 
Delle venti caselle di testo risultanti Ordixxxx e Buoxxxx , ad un determinato evento vorrei visualizzare solo quelle caselle che sono diverse da zero.
Le ho impostate visibili a no e sul clic ho scritto:
 
'2011
If Me.Ordi2011 <> 0 Then
    Me.Ordi2011.Visible = True
End If
If Me.Buo2011 <> 0 Then
    Me.Buo2011.Visible = True
End If
 
'2012
If Me.Ordi2012 <> 0 Then
    Me.Ordi2012.Visible = True
End If
If Me.Buo2012 <> 0 Then
    Me.Buo2012.Visible = True
End If
 
.....fino a Ordi2020 e Buo 2020.
 
Se lo faccio da codice (impostando punto interruzione e f8 funziona, se lo lascio da maschera non fa nulla...
Qualcuno sa come facilitarmi ?
grazie infinite

 grazie infinite
 
problema di refresh form... vai di DoEvents
 
 
-- 
------------
Pablitomf
Napoli sempre nel "Q"uore!
"mammasantissima" si nasce, non si diventa.
 

 ha scritto:

RIPORTO LA TUA MAIL SPEDITAMI ERRONEAMENTE IN PVT:
 
Ciao Pablito, 
scusa se rompo ma non ti seguo... 
Do.events non me lo trova con l' f1 e allora vorrei capirne di piï¿œ.. 
Se non ho capito male devo fare un ciclo che, inserito tra ogni blocco
anno di istruzioni, conta sino a 20 e incrementa ogni anno. 
Oppure mi sfugge qualcosa e devo darlo come evento ad ogni casella di testo ? 
scusamio ma sono un pï¿œ gnocco... 
grazie infinite, come sempre, ciao
M
 
---------
 
ma chi ha parlato di Do.Events? :D ho detto DeEvents... senza punto!
 
e cmq puoi decisamente togliere tutti quegli if e fare una roba tipo:
 
Dim x as integer
For x=11 to 20 
  If Me.Controls("Buo" & x) <> 0 then
     Me.Ordi2012.Visible = True
 
 
Next x


 ha scritto:

cliccato ENTER troppo in fretta...
 
RIPORTO LA TUA MAIL SPEDITAMI ERRONEAMENTE IN PVT:
 
Ciao Pablito, 
scusa se rompo ma non ti seguo... 
Do.events non me lo trova con l' f1 e allora vorrei capirne di piï¿œ.. 
Se non ho capito male devo fare un ciclo che, inserito tra ogni blocco anno
di istruzioni, conta sino a 20 e incrementa ogni anno. 
Oppure mi sfugge qualcosa e devo darlo come evento ad ogni casella di testo ? 
scusamio ma sono un pï¿œ gnocco... 
grazie infinite, come sempre, ciao
M
 
---------
 
ma chi ha parlato di Do.Events? :D ho detto DeEvents... senza punto!
 
e cmq puoi decisamente togliere tutti quegli if e fare una roba tipo:
 
Dim x as integer
For x=2011 to 2020 
  If Me.Controls("Buo" & x) <> 0 then
     Me.Controls("Ordi" & x).Visible= True
  End If
  DoEvents


 
grazie Pablito, e scusa per la mail in pvt, con questo nuovo look non mi trovo molto...
scusa pure per il do.events....
un caro saluto
M

 grazie Pablito, e scusa per la mail in pvt, con questo nuovo look non mi trovo molto... scusa pure per il do.events.... un caro saluto M
 
 
 
scusatemi ancora...sono in crisi.
Dopo le indicazioni di Pablito ho scritto questo codice:
 
Private Sub NMensilità_AfterUpdate()
Dim x As Integer
 
'rende visibili celle sommatorie mensili Ordinativi e Buoni
 
x = "2011"
For x = 2011 To 2020
    If Me.controls("Ordi" & x) <> 0 Then
        Me.controls("Ordi" & x).Visible = True
        Else
        Me.controls("Ordi" & x).Visible = False
    End If
        DoEvents
    Next x
 
x = "2011"
For x = 2011 To 2020
    If Me.controls("Buo" & x) <> 0 Then
        Me.controls("Buo" & x).Visible = True
        Else
        Me.controls("Buo" & x).Visible = False
    End If
        DoEvents
    Next x
 
End Sub
 
purtroppo mi appare un box con la dicitura "Nessun valore nell'espressione immessa"
Preciso che se con il cursore vado sul codice di x ne vedo il valore (2011) ma tutto si ferma li...
grazie ancora a tutti per il prezioso aiuto...


1) perche' metti x = "2011" quando l'hai dichiarato integer? devi mettere al
massimo x = 2011
 
2) perche' fai 2 cicli visto che i valori sono sempre quelli? Metti tutto in un
ciclo...
 
Dim x As Integer
x = 2011
For x = 2011 To 2020
    If Me.controls("Ordi" & x) <> 0 Then
        Me.controls("Ordi" & x).Visible = True
    Else
        Me.controls("Ordi" & x).Visible = False
    End If
    If Me.controls("Buo" & x) <> 0 Then
        Me.controls("Buo" & x).Visible = True
    Else
        Me.controls("Buo" & x).Visible = False
    End If
    DoEvents
Next x
 
 
 


 > Private Sub NMensilità_AfterUpdate() > Dim x As Integer > > 'rende visibili celle sommatorie mensili Ordinativi e Buoni > > x = "2011" > For x = 2011 To 2020 > If Me.controls("Ordi" & x) <> 0 Then > Me.controls("Ordi" & x).Visible = True > Else > Me.controls("Ordi" & x).Visible = False > End If > DoEvents > Next x > > x = "2011" > For x = 2011 To 2020 > If Me.controls("Buo" & x) <> 0 Then > Me.controls("Buo" & x).Visible = True > Else > Me.controls("Buo" & x).Visible = False > End If > DoEvents > Next x > > End Sub > > purtroppo mi appare un box con la dicitura "Nessun valore nell'espressione immessa" > Preciso che se con il cursore vado sul codice di x ne vedo il valore (2011) ma tutto si ferma li... > grazie ancora a tutti per il prezioso aiuto... > 1) perche' metti x = "2011" quando l'hai dichiarato integer? devi mettere al massimo x = 2011 2) perche' fai 2 cicli visto che i valori sono sempre quelli? Metti tutto in un ciclo... Dim x As Integer x = 2011 For x = 2011 To 2020 If Me.controls("Ordi" & x) <> 0 Then Me.controls("Ordi" & x).Visible = True Else Me.controls("Ordi" & x).Visible = False End If If Me.controls("Buo" & x) <> 0 Then Me.controls("Buo" & x).Visible = True Else Me.controls("Buo" & x).Visible = False End If DoEvents Next x -- ------------ Pablitomf Napoli sempre nel "Q"uore! "mammasantissima" si nasce, non si diventa.
 
grazie Pablito.
purtroppo continua a dare "nessun valore nell'espressione immessa" e non visualizza le celle.
ciao grazie

 > purtroppo continua a dare "nessun valore nell'espressione immessa" e non
visualizza le celle.
 
ma su cosa si blocca?... nessun valore su quale espressione?


 > > grazie Pablito. > > > > purtroppo continua a dare "nessun valore nell'espressione immessa" e non visualizza le celle. ma su cosa si blocca?... nessun valore su quale espressione? -- ------------ Pablitomf Napoli sempre nel "Q"uore! "mammasantissima" si nasce, non si diventa.
 
 
ciao Pablito,
ho scoperto che si blocca quando le 20 caselle di testo Ordi20xx e Buo20xx sono vuote.
La formula contenuta in tali caselle (nell'esempio quella di Ordi2011), è questa:
=Conteggio(IIf([Anno]=2011;[IMPORTOOrdinativo]))
 
posso mettere un NZ davanti a conteggio e avere quindi:
= NZ Conteggio(IIf([Anno]=2011;[IMPORTOOrdinativo]))
 
grazie infinite
ciao
M

 Il giorno martedì 11 settembre 2012 20:36:11 UTC+2, Pablitomf ha scritto: > > > grazie Pablito. > > > > purtroppo continua a dare "nessun valore nell'espressione immessa" e non visualizza le celle. ma su cosa si blocca?... nessun valore su quale espressione? -- ------------ Pablitomf Napoli sempre nel "Q"uore! "mammasantissima" si nasce, non si diventa. ciao Pablito, ho scoperto che si blocca quando le 20 caselle di testo Ordi20xx e Buo20xx sono vuote. La formula contenuta in tali caselle (nell'esempio quella di Ordi2011), è questa: =Conteggio(IIf([Anno]=2011;[IMPORTOOrdinativo])) posso mettere un NZ davanti a conteggio e avere quindi: = NZ Conteggio(IIf([Anno]=2011;[IMPORTOOrdinativo])) grazie infinite ciao M
 
 
anche premettendo NZ all'istruzione di conteggio nella casella di testo, il codice mi da errore e non so più come uscirne.
In pratica la maschera attinge da una query, con un combo scelgo un codice Accordo quadro che mi visualizza i record relativi allo stesso.
Le 20 caselle vengono visualizzate se il conteggio relativo al loro anno è diverso da zero.
Purtroppo se la query non mi restituisce record il codice di conteggio va in tilt.
Ho provato anche a valorizzare le 20 celle di conteggio da codice ma non riesco a impostarne la relativa istruzione.
Se qualcuno mi aiuta mi fa un grosso favore.
grazie ancora a tutti.

> Purtroppo se la query non mi restituisce record il codice di conteggio va in tilt.
 
il conteggio presumo vada in tilt perche' tu esegui una istruzione IF su un
campo che confronti con un valore numerico >0. Trovando nello stesso "null" o
"vuoto" (che non sono valori numerici) diviene ovvio che il confronto va in
errore... basterebbe che nelle caselle, qualora non vi fosse alcun record, tu
attribuissi valori ZERO, e avresti imho risolto.


 attribuissi valori ZERO, e avresti imho risolto.
 
e cmq, se proprio non vuoi, basta mettere un On Error Resume Next come prima
riga di codice nella routine di conteggio... in modo tale che se pure il codice
va in errore, continua a girare fino alla fine.


 ha scritto: > > Purtroppo se la query non mi restituisce record il codice di conteggio va in tilt. > > il conteggio presumo vada in tilt perche' tu esegui una istruzione IF su un > campo che confronti con un valore numerico >0. Trovando nello stesso "null" o > "vuoto" (che non sono valori numerici) diviene ovvio che il confronto va in > errore... basterebbe che nelle caselle, qualora non vi fosse alcun record, tu > attribuissi valori ZERO, e avresti imho risolto. e cmq, se proprio non vuoi, basta mettere un On Error Resume Next come prima riga di codice nella routine di conteggio... in modo tale che se pure il codice va in errore, continua a girare fino alla fine. -- ------------ Pablitomf Napoli sempre nel "Q"uore! "mammasantissima" si nasce, non si diventa.
 
mi ero proprio arenato li nel cercare di dare valore 0 a quelle celle.
Ora ho risolto con il tuo GRANDIOSO "On Error Resume Next".
Non mi sembra vero...
grazie dell'utilissima informazione che non dimenticherò mai più.