Newsgroup: it.comp.appl.access
Titolo: errore: impossibile trovare la maschera

ciao a tutti
 
partendo da questo codice che funziona...
 
If Frm!SM_EstremiFatture.Form!MiaFattura <> "Non Fatturato" Then
  strMsg = "che hai già fatturato"
  ElseIf Frm!SM_EstremiFatture.Form!FatturaFo <> "Fattura Fornitore da ricevere" Then
  strMsg = "già fatturato dal fornitore"
  ElseIf Frm!SM_CarichiFornitori.Form!Chius_Carico <> 0 Then
  strMsg = "chiuso"
 
End If
 
non mi spiego perchè questo codice che fa parte di una 
Public Sub Sblocca(Frm As Form);
non mi trova la form...
 
Dim frmCurrentForm As Form
Dim strForm As String
Dim strMsg As String 
 
Set frmCurrentForm = Screen.ActiveForm
strForm = frmCurrentForm.Name
strForm = strForm & "!SM_EstremiFatture.Form"
 
If Forms(strForm)!MiaFattura <> "Non Fatturato" Then
  strMsg = "che hai già fatturato"
ElseIf Forms(strForm)!FatturaFo <> "Fattura Fornitore da ricevere" Then
  strMsg = "già fatturato dal fornitore"
ElseIf Forms(strForm)!Chius_Carico <> 0 Then
  strMsg = "chiuso"
 
End If
 
grazie


ho provato anche cosi...
strForm = Eval(strForm & "!SM_EstremiFatture.Form")

   ...
 
Siccome non hai rivelato dove occore l'errore, presumo in quest'ultima 
riga. In questo caso succede perché
1) ti riferisci ad una sottomaschera e le sottomaschere non si trovano 
nell'insieme Forms,
2) sbagli la sintassi con la proprietà ".Form" nella stringa.
 
Potresti usare p.e.
 
strForm = frmCurrentForm.Name
strSubForm = "SM_EstremiFatture"
 
If Forms(strForm)(strSubForm).Form("MiaFattura")
o certo
If Forms(strForm)("SM_EstremiFatture").Form("MiaFattura")
o
...
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it
 

 nell'insieme Forms,
 
Karl io, ovviamente, ti credo.
Ma mi stai ammazzando!
Perche' le subform /non/ sono nell'insieme forms?
 
-- 
ac (x=y-1)
Aborro il Killfile
(La violenza e' l'ultimo rifugio degli incapaci -Salvor Hardin-)


Perchè sonon un oggetto di tipo FORM ma essendo SottoMaschere vengono contenute nella Collection CONTROLS.
 
@Alex


grazie Alex


grazie Karl


Vabbe'!
in .controls c'e' tutto quello definito nell'oggetto contenitore.
E' chiaro, se sa.
 
 
Scenario.
Faccio un form e carico /dinamicamente/ nel controllo subform una 
qualsiasi form esistente.
Ricordo male o la collezione Forms contiene /tutte/ le form definite
nell'mdb (o quello che e')?


 nell'mdb (o quello che e')?
 
Ricordi male. Insieme Forms = tutte le maschere aperte attualmente.
Tutte le maschere del mdb/accdb sono p.e. nel AllForms del CurrentProject.



 
Ricordo male!
Meno male che me lo hai ricordato. :-)
La AllForms me la sono/ero completamente dimenticata.
Sono due giorni che mi dico:
Ma erano le Forms aperte o /tutte/ Forms?
Meno male che c'e' san Karl che mi porta sulla retta via ;-)
Grazie.
 
P.S.
Karl chi hai votato come presidente dell'Austria?


 Karl chi hai votato come presidente dell'Austria?
 
Dove resta il mio segreto elettorale? ;-)
Da 30 anni voto quasi sempre verde ed il vincitore era il capo dei verdi 
per molti anni...



 
Bene!
Non avrei voluto cominciare a dire che di Access non capisci nulla! ;-)


 
...
 
"Se sa..." cosa significa...?
 
La sintassi che scrive Karl secondo te cosa fa...? :
Forms(strForm)(strSubForm).Form("MiaFattura") 
 
Mica passa per la collection ALLFORMS... ma proprio per la Collection Controls che appunto contiene i Controlli della Form... e la SubForm è un Controllo della Form dipendente dal Container Controltype = SubForm...
 
Forms(strForm) <----Riferimento alla FORM
 
Forms(strForm)(strSubForm)  <----Riferimento al Container SUBFORM attarverso la collection Controls richiamata in modo IMPLICITO
Perfettamente equivalente al metodo ESPLICITO:
Forms(strForm).Controls(strSubForm) 
 
Quindi:
Forms(strForm)(strSubForm).Form("MiaFattura") 
 
Quindi cosa c'è di così SCONTATO... dal momento che non lo è...?
 
@Alex

 "Se sa..." cosa significa...?
 
Che e' cosa risaputa?
Comunque e' una frase presa a prestito da un conoscente che  parlava un
corretto italiano e poi piazzava questa frase in perfetta cadenza 
romanesca, sempre sorridendo.
 
Il codice di Karl non lo ho neanche guardato  (davo per scontato che
fosse corretto)
Nella mia risposta a Karl trovi la, forse, spiegazione.
Mi ero /completamente/ dimenticato che la collezione Forms contiene 
*solo* i form aperti (e non sono andato sul reference a rileggere).
E' una collezione di cui non ho quasi mai fatto uso.



Mi limitavo a dire che per arrivare al riferimento dell'oggetto SubForm come Franco ha chiesto... l'unica soluzione è passare per la collection CONTROLS che sia o meno "scontata"...
 
Ciao
@Alex