Newsgroup: it.comp.appl.access
Titolo: donkarl.com/it?FAQ4.13

sto lavorando sugli eventi non in lista.
Dalla maschera1, non avendo in lista il cliente apre M_Lista_Carico.
Dopo aver popolato la maschera, chiudo, ma mi segnala: Impossibile trovare 
la maschera M_Preventivo
--------questo il codice di chiusura maschera1------------
Private Sub Form_Close()
On Error GoTo Err_Form_Close
If IsLoaded("M_Preventivo") Then
Forms!M_Preventivo.CasellaCombinata135 = Me!lCodiceCliente
Forms!M_Preventivo.CasellaCombinata116.Requery
Forms!M_Preventivo.CasellaCombinata135.Requery
Else
End If
If IsLoaded("M_Lista_Carico") Then
Forms!M_Preventivo.CasellaCombinata116 = Me!lCodiceCliente
Forms!M_Preventivo.CasellaCombinata116.Requery
Forms!M_Preventivo.CasellaCombinata135.Requery
End If
Exit_Form_Close:
    Exit Sub
Err_Form_Close:
    MsgBox Err.Description
    Resume Exit_Form_Close
End Sub
precedentemente con altro medoto di gestione noninlista, l'errore non mi 
usciva.
Ciao
-- 
Cataldo Formaro

 ...
Ciao Cataldo,
se Access ti dà questo messaggio è molto probabile che
la tua (?) funzione IsLoaded() non funziona. Esiste una proprietà
di Access che si chiama IsLoaded, ma con una sintassi molto
diversa che puoi vedere qui:
Verificare se una maschera è aperta
www.donkarl.com/it?FAQ4.19
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 Access FAQ: 
www.donkarl.com/it
Ciao Karl,
ho creato un modulo pubblico, cosi impostato:
Public Function fctIsFormOpen(StrName As String) As Boolean
  fctIsFormOpen = (SysCmd(acSysCmdGetObjectState, acForm, StrName) > 0)
End Function
quindi su chiusura form ho questo codice:
Private Sub Form_Close()
On Error GoTo Err_Form_Close
On Error GoTo Err_Form_Close
If fctIsFormOpen("M_Preventivo") Then
Forms!M_Preventivo.CasellaCombinata135 = Me!lCodiceCliente
Forms!M_Preventivo.CasellaCombinata116.Requery
Forms!M_Preventivo.CasellaCombinata135.Requery
Else
End If
If fctIsFormOpen("M_Lista_Carico") Then
Forms!M_Preventivo.CasellaCombinata116 = Me!lCodiceCliente
Forms!M_Preventivo.CasellaCombinata116.Requery
Forms!M_Preventivo.CasellaCombinata135.Requery
End If
Exit_Form_Close:
    Exit Sub
Err_Form_Close:
    MsgBox Err.Description
    Resume Exit_Form_Close
End Sub
Mi restituisce sempre lo steso errore di prima.
Cataldo Formaro 

 
[cut]
oltre al giusto consiglio di Karl, ti chiedo se queste 5 righe 
significano qualcosa?
Controlli se ï¿œ aperta M_Lista_Carico ma popoli M_Preventivo che potrebbe 
essere chiusa .... non capisco.
IvanDaBologna

 
Eliminando l'errore hai risolto ??
IvanDaBologna

 Forms!M_Preventivo.CasellaCombinata116 = Me!lCodiceCliente
Cioè che fai la prova per "M_Lista_Carico" ma poi aggiorni un
controllo nella maschera diversa (!) "M_Preventivo".


 Access FAQ: 
www.donkarl.com/it
le maschere da verificare sono piu di una
Private Sub Form_Close()
On Error GoTo Err_Form_Close
On Error GoTo Err_Form_Close
If fctIsFormOpen("M_Preventivo") Then
Forms!M_Preventivo.CasellaCombinata135 = Me!lCodiceCliente
Forms!M_Preventivo.CasellaCombinata116.Requery
Forms!M_Preventivo.CasellaCombinata135.Requery
Else
End If
If fctIsFormOpen("M_Lista_Carico") Then
Forms!M_Preventivo.CasellaCombinata116 = Me!lCodiceCliente
Forms!M_Preventivo.CasellaCombinata116.Requery
Forms!M_Preventivo.CasellaCombinata135.Requery
else
End If
Exit_Form_Close:
    Exit Sub
Err_Form_Close:
    MsgBox Err.Description
    Resume Exit_Form_Close
End Sub
vale a dire che
se M_Preventivo č aperta requery, else
se M_Lista_Caricoo č aperta requery, else
č piu chiaro?
-- 
Cataldo Formaro

 è piu chiaro?
Non sono sicuro.
Qual'è la riga di codice dove succede l'errore, cioè quello che
Access ti mostra in giallo con l'errore?
In ogni case col tuo secondo blocco di codice non provi
se la maschera M_Preventivo è aperta. Certo senza
questa prova e se non è aperta ricevi l'errore che riporti.
BTW
I nomi dei tuoi caselle combinate sono brutti. Sarebbe molto
meglio di impostare nomi che dicono cosa c'è dentro o
cosa fanno.


 I nomi dei tuoi caselle combinate sono brutti. ...
BTW il mio italiano è brutto...
I nomi delle tue caselle combinate sono brutte.
Giusto? 

 Access FAQ: 
www.donkarl.com/it
ciao
-- 
Cataldo Formaro

 Giusto?
La tua correzione č molto piů veloce delle mie :-)) 

> ...
Perché non fai la prova mancante?
Puoi o nidificare il secondo blocco di codice nel primo
o invece iniziare il secondo blocco con
If fctIsFormOpen("M_Preventivo") And _
        fctIsFormOpen("M_Lista_Carico") Then
...


 ha scritto nel messaggio 
news:6qhk3dF...@mid.individual.net...

ecco il codice per intero
Private Sub Form_Close()
On Error GoTo Err_Form_Close
If fctIsFormOpen("M_Preventivo") And _
    fctIsFormOpen("M_Lista_Carico") And _
        fctIsFormOpen("M_DDT") And _
            fctIsFormOpen("M_Fattura") And _
                fctIsFormOpen("M_Nota_credito") And _
                    fctIsFormOpen("M_Vendita_Cassa") Then
           Forms!M_Preventivo.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_Preventivo.CasellaCombinata116.Requery
        Forms!M_Preventivo.CasellaCombinata135.Requery
     Else
End If
Exit_Form_Close:
    Exit Sub
Err_Form_Close:
    MsgBox Err.Description
    Resume Exit_Form_Close
End Sub
ho addirittura a togliere else.. ma niente
Cataldo Formaro 

 ...
Cosa vuol dire "niente"?
Ricevi l'errore o non succede niente?
Se niente vuol dire niente... poi ehm, Cataldo... un dubbio che mi
viene in mente... è quasi impossibile ;-) ma ...
Non puo darsi che nel tuo database una maschera "M_Preventivo"
non esiste? Hai controllato e ricontrollato il nome esatto nella
finestra database?


Possiamo pranzare tranquilli, tutto risolto, ecco come:
Private Sub Form_Close()
On Error GoTo Err_Form_Close
If fctIsFormOpen("M_Preventivo") Then
Forms!M_Preventivo.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_Preventivo.CasellaCombinata116.Requery
        Forms!M_Preventivo.CasellaCombinata135.Requery
        Else
     End If
    If fctIsFormOpen("M_Lista_Carico") Then
  Forms!M_Lista_Carico.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_Lista_Carico.CasellaCombinata116.Requery
        Forms!M_Lista_Carico.CasellaCombinata135.Requery
        Else
        End If
       If fctIsFormOpen("M_DDT") Then
        Forms!M_DDT.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_DDT.CasellaCombinata116.Requery
        Forms!M_DDT.CasellaCombinata135.Requery
        Else
       End If
            If fctIsFormOpen("M_Fattura") Then
            Forms!M_Fattura.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_Fattura.CasellaCombinata116.Requery
        Forms!M_Fattura.CasellaCombinata135.Requery
        Else
         End If
                If fctIsFormOpen("M_Nota_credito") Then
                  Forms!M_Nota_credito.CasellaCombinata116 = 
Me!lCodiceCliente
        Forms!M_Nota_credito.CasellaCombinata116.Requery
        Forms!M_Nota_credito.CasellaCombinata135.Requery
        Else
           End If
                    If fctIsFormOpen("M_Vendita_Cassa") Then
        Forms!M_Vendita_Cassa.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_Vendita_Cassa.CasellaCombinata116.Requery
        Forms!M_Vendita_Cassa.CasellaCombinata135.Requery
   Else
   End If
Exit_Form_Close:
    Exit Sub
Err_Form_Close:
    MsgBox Err.Description
    Resume Exit_Form_Close
End Sub
Ciao Karl, alla prossima
Cataldo Formaro 

 
ma è un errore logico!
Se vuoi mettere vari If ... Then Else li devi indicare uno per uno e 
chiudere correttamente.
  If fctIsFormOpen("M_Preventivo") Then
     Forms!M_Preventivo.CasellaCombinata116 = Me!lCodiceCliente
     Forms!M_Preventivo.CasellaCombinata116.Requery
     Forms!M_Preventivo.CasellaCombinata135.Requery
  Else
     If fctIsFormOpen("M_Lista_Carico") Then
        Forms!M_Lista_Carico.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_Lista_Carico.CasellaCombinata116.Requery
        Forms!M_Lista_Carico.CasellaCombinata135.Requery
     Else
        If fctIsFormOpen("M_DDT") Then
           Forms!M_DDT.CasellaCombinata116 = Me!lCodiceCliente
           Forms!M_DDT.CasellaCombinata116.Requery
           Forms!M_DDT.CasellaCombinata135.Requery
        Else
           If fctIsFormOpen("M_Fattura") Then
              Forms!M_Fattura.CasellaCombinata116 = Me!lCodiceCliente
              Forms!M_Fattura.CasellaCombinata116.Requery
              Forms!M_Fattura.CasellaCombinata135.Requery
           Else
              If fctIsFormOpen("M_Nota_credito") Then
                 Forms!M_Nota_credito.CasellaCombinata116 = 
Me!lCodiceCliente
                 Forms!M_Nota_credito.CasellaCombinata116.Requery
                 Forms!M_Nota_credito.CasellaCombinata135.Requery
              Else
                 If fctIsFormOpen("M_Vendita_Cassa") Then
                  Forms!M_Vendita_Cassa.CasellaCombinata116 = 
Me!lCodiceCliente
                  Forms!M_Vendita_Cassa.CasellaCombinata116.Requery
                  Forms!M_Vendita_Cassa.CasellaCombinata135.Requery
              End If
           End If
        End If
     End If
   End If
.... anche se non ho ben capito tutto questo ambaradan. Molto meglio 
mettersi in una variabile globale il nome della maschera chiamante e 
usarlo per puntare ai controlli giusti. All'inizio di qualsiasi modulo 
(prima della prima procedura) puoi indicare la variabile dimensionandola 
così
Global glbNomeMaskChiamante As String
Quando invochi la maschera per aggiunta ti punti il nome della maschera 
corrente .
glbNomeMaskChiamante = Me.name
e la tua procedura così complicata potrebbe diventare :
Forms("glbNomeMaskChiamante").Controls("CasellaCombinata116")=Me!lCodiceCliente
Forms("glbNomeMaskChiamante").Controls("CasellaCombinata116").Requery
Forms("glbNomeMaskChiamante").Controls("CasellaCombinata135").Requery
non devi nemmeno controllare se la maskera è aperta, lo è di sicuro 
visto che solo quella può aver messo il suo nome nella variabile globale.
IvanDaBologna

ooops svista! diventa:
 
Forms(glbNomeMaskChiamante).Controls("CasellaCombinata116")=Me!lCodiceCliente 
  Forms(glbNomeMaskChiamante).Controls("CasellaCombinata116").Requery
  Forms(glbNomeMaskChiamante).Controls("CasellaCombinata135").Requery

 Possiamo pranzare tranquilli, tutto risolto, ecco come:
cut
Ancora più compatta:
Private Sub Form_Close()
On Error GoTo Err_Form_Close
If fctIsFormOpen("M_Preventivo") Then
        Forms!M_Preventivo.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_Preventivo.CasellaCombinata116.Requery
        Forms!M_Preventivo.CasellaCombinata135.Requery
End If
    If fctIsFormOpen("M_Lista_Carico") Then
        Forms!M_Lista_Carico.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_Lista_Carico.CasellaCombinata116.Requery
        Forms!M_Lista_Carico.CasellaCombinata135.Requery
End If
If fctIsFormOpen("M_DDT") Then
        Forms!M_DDT.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_DDT.CasellaCombinata116.Requery
        Forms!M_DDT.CasellaCombinata135.Requery
End If
If fctIsFormOpen("M_Fattura") Then
        Forms!M_Fattura.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_Fattura.CasellaCombinata116.Requery
        Forms!M_Fattura.CasellaCombinata135.Requery
End If
 If fctIsFormOpen("M_Nota_credito") Then
       Forms!M_Nota_credito.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_Nota_credito.CasellaCombinata116.Requery
        Forms!M_Nota_credito.CasellaCombinata135.Requery
End If
If fctIsFormOpen("M_Vendita_Cassa") Then
        Forms!M_Vendita_Cassa.CasellaCombinata116 = Me!lCodiceCliente
        Forms!M_Vendita_Cassa.CasellaCombinata116.Requery
        Forms!M_Vendita_Cassa.CasellaCombinata135.Requery
End If
Exit_Form_Close:
    Exit Sub
Err_Form_Close:
    MsgBox Err.Description
    Resume Exit_Form_Close
End Sub
Ciao, Carlo
P.S. Gli else seguiti da end if sono inutili.