Newsgroup: it.comp.appl.access
Titolo: riferimento non valido alla propèrietà Form/Report nell'espressione

su Current di una sottomaschera ho l'errore 2455
 
riferimento non valido alla propèrietà Form/Report nell'espressione
 
If Not IsNull(Me!M_Doc_Fatturati!DDT_Fatt) Then
    Me.AllowDeletions = True
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowDeletions = True
ecc.
 
grazie. 
 
 

Ciao.
 
La butto là ... provare ad eliminare quel ".form" nel tuo comando?
 
HTH
 
Popi

 ha scritto nel messaggio 
news:15183238.1778.1327500740833.JavaMail.geo-discussion-forums@vbiq27...
Ciao.
 
La butto là ... provare ad eliminare quel ".form" nel tuo comando?
 
 
Grazie Popi
 
con "Forms!M_Ordine![M_Carichi_da_Fornitore].AllowDeletions = True"
ho l errore 438
 
proprietà o metodo non supportati dall'oggetto 
 
 


Sei sicuro che l'"erore" e' su:
       Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowDeletions = True
e non su:
IsNull(Me!M_Doc_Fatturati!DDT_Fatt)
-- 
 
ac (x=y-1)

 -- 
 
ciao Alessandro
Non sono sicuro dove puo' essere l'errore, ma
Questo č l'intero codice;
e la prima riga dove ho l errore (2455) č
 
    Forms!M_Ordine![M_Trasp_Merce].Form.AllowEdits = True
 
 
If Not IsNull(Me!M_Doc_Fatturati!DDT_Fatt) Then
    Me.AllowDeletions = True
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowDeletions = True
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowEdits = True
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowAdditions = True
 
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowDeletions = True
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowEdits = True
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowAdditions = True
 
    Forms!M_Ordine![M_Trasp_Merce].Form.AllowEdits = True
 
Else
    Me.AllowDeletions = False
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowDeletions = False
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowEdits = False
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowAdditions = False
 
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowDeletions = False
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowEdits = False
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowAdditions = False
 
    Forms!M_Ordine![M_Trasp_Merce].Form.AllowEdits = False
End If 
 
 

 End If
 
ho dimenticato di dire che ho inserito il codice su Current
della sottomaschera "M_Carichi_Ordine"
e che tutte le sottomaschere si trovano nella maschera M_Ordine;
tranne "M_Doc_Fatturati" che si trova all'interno della sottomaschera
"M_Carichi_Ordine"
 
 
 

Ciao.
 
E magari l'errore esce fuori appena apri la maschera?
 
Popi

 Popi
è cosi' 
 
 

> IsNull(Me!M_Doc_Fatturati!DDT_Fatt)
 
IsNull(Me!M_Doc_Fatturati.Form!DDT_Fatt)
 
e come fai a non sapere dove e' l'errore?
Ti dovrebbe dare la msgbox con i bottoni *fine* e *debug* basta cliccare 
debug e la istruzione in errore e' li stesa davanti a te.
-- 
 
ac (x=y-1)

 ha scritto nel messaggio 
news:VuVTq.126137$GZ3....@tornado.fastwebnet.it...

se faccio il debug non ho errori, ma se apro la maschera
 
ho errore dove ho segnalato con "1-"
 
If Not IsNull(Me!M_Doc_Fatturati!DDT_Fatt) Then
    Me.AllowDeletions = True
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowDeletions = True
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowEdits = True
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowAdditions = True
 
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowDeletions = True
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowEdits = True
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowAdditions = True
 
    '1-Forms!M_Ordine![M_Trasp_Merce].Form.AllowEdits = True


 ha scritto nel messaggio 
news:4f2026f4$0$1384$4faf...@reader2.news.tin.it...

poi in seguito uno ad uno ho errore anche su
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowDeletions = True


    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowAdditions = True
la cosa strana è che non fosse per l'errore,
il funzionamento è corretto 
 
 

>
 
 
 
-- 
 
ac (x=y-1)

 ha scritto nel messaggio 
news:zvWTq.126194$GZ3....@tornado.fastwebnet.it...

sono sottomaschere.
mentre M_Doc_Fatturati!DDT_Fatt
è sottomaschera!controllo
contenuta nella sottomaschera M_Carichi_Ordine
 
la maschera principale è M_Ordine
 
 
 
 
 


Ardajie nome form o nome del controllo subform?
Che sono sottomaschere lo avevo compreso.
A occhio mentre questa:
[SDettaglioOrdine]
mi sembra, correttamente, il nome del controllo subform
le altre sembrano il nome del form, e questo e' un "mistaken".
 
sai usare il debug?
 
 
-- 
 
ac (x=y-1)

 sai usare il debug?
non tanto 
 
 

Ciao!
 
Hai una struttura di questo genere
 
FORM M_Ordine
     SUBF M_Carichi_da_Fornitore
     SUBF M_Carichi_Ordine
          SUBF M_Doc_Fatturati
     SUBF SDettaglioOrdine
     SUBF M_Trasp_Merce
 
Aprendo la maschera M_Ordine, l'evento Current di M_Carichi_Ordine richiama l'oggetto Forms!M_Ordine![M_Carichi_da_Fornitore] che, evidentemente non è ancora stato inizializzato.
 
In questi casi (adattati alla tua situazione) io uso un flag "MascheraAvviata" in M_Ordine che imposto a TRUE quando la M_Ordine è stata caricata completamente e nel Current della M_Carichi_Ordine eseguo il codice solo se il flag è TRUE.
 
Ma questa è la mia soluzione da ignorante e magari esiste una soluzione molto più semplice e/o elegante.
 
HTH
Popi

 ha scritto nel messaggio 
news:21919508.296.1327571199051.JavaMail.geo-discussion-forums@vbed2...
Ciao!
 
Hai una struttura di questo genere
 
FORM M_Ordine
     SUBF M_Carichi_da_Fornitore
     SUBF M_Carichi_Ordine
          SUBF M_Doc_Fatturati
     SUBF SDettaglioOrdine
     SUBF M_Trasp_Merce
 
Aprendo la maschera M_Ordine, l'evento Current di M_Carichi_Ordine richiama 
l'oggetto Forms!M_Ordine![M_Carichi_da_Fornitore] che, evidentemente non č 
ancora stato inizializzato.
 
In questi casi (adattati alla tua situazione) io uso un flag 
"MascheraAvviata" in M_Ordine che imposto a TRUE quando la M_Ordine č stata 
caricata completamente e nel Current della M_Carichi_Ordine eseguo il codice 
solo se il flag č TRUE.
 
Ma questa č la mia soluzione da ignorante e magari esiste una soluzione 
molto piů semplice e/o elegante.
 
grazie dell'aiuto 
 
 

 Ma questa č la mia soluzione da ignorante e magari esiste una soluzione molto piů semplice e/o elegante.
Non fare il modesto (falso come la famosa banconota da trenta euri) ;-{)
Comunque io uso un banale "on error resume next" (*)
 
 
(*) Per franco.
La forma Forms!nomediform
la uso solo per riferire ad un form diverso da quello attuale e gia' 
caricato altrimenti uso la forma me!nomedicontrollo.
Il current in apertura viene innescato due volte la prima volta le 
sottomaschere non sono caricate e quindi un qualsiasi riferimento ai 
controlli delle suddette va in errore.
 
-- 
 
ac (x=y-1)

 ha scritto nel messaggio 
news:IybUq.126547$GZ3....@tornado.fastwebnet.it...

grazie Alessandro
 
ma se la maschera ha p.e.
due sottomaschere
e da una sottomaschera voglio fare riferimento
ad un controllo dell'altra sottomaschera
come devo fare? 
 
 

Orpo ... io sapevo che i fogli da 20 erano i più falsificati ... adesso sono passati a quelli da 30??? :))))
 
L'ego mio ringrazia per il complimento (a propo di complimenti: ma ... il bell'Antonio dov'è finito?), ma vedi che avevo ragione?
 
Non sapevo (né m'ero mai reso conto) che il Current partisse sia prima che dopo ... mi sa che devo ritoccare un po' di codice in giro :(
 
Popi

 come devo fare?
Non ho affatto voglia di lavorare comunque...........
 
L'oggetto principale e' il *me* (normalmente istanza di classe o form(*) )
L'oggetto *me* e' una scatola cinese o matrioska (dipende dale 
preferenze culturali). In questa scatola ci sono i riferimenti a tutto 
il mondo access.
Quando scrivi forms!blabla il percorso vero e':
me.application.forms.blabla
me.application si puo' omettere (viene associato per mancanza (default)) 
e l'insieme *forms* viene alimentato automaticamente da access a fronte 
di ogni apertura di nuova form.
 
Amettendo che hai un form cosi composto:
form1:subform1-->subform11,subform2-->subform21-->subform22
 
se i focus e' su subform22 (evento ad es di current il *me* e' quindi 
"subform22") per accedere ad un controllo di subform11 sono possibili 2 
strade:
1) forms!form1!subform11.form!nomecontrollo
 
2) me.Parent.Parent.Parent.subform1.Form.subform2.form.nomecontrollo
L'oggetto *parent* e' il contenitore( padre o genitore che dirsivoglia)
In questo esempio l'istruzione risale fino al contenitore comune e poi 
ridiscende verso il controllo desiderato. Questa forma talvolta puo' 
essere complessa da maneggiare e si preferisce la "scorciatoia" 
dell'insieme forms.
 
In sintesi, se le cose stanno come ha previsto Popi le tue istruzioni 
sono corrette. Il problema e' che in apertura i controlli (subform) non 
sono ancora caricati.
Il modo piu' *rozzo* di superare il problema e' inserire l'istruzione
"on error resume next" all'inizio della routine di *current*
 
 
(*) di fatto il form e' una istanza della classe *form* che viene 
generata a fronte della open
 
 
-- 
 
ac (x=y-1)

 2) me.Parent.Parent.Parent.subform1.Form.subform2.form.nomecontrollo
e.c
me.Parent.Parent.Parent.subform1.Form.subform11.form.nomecontrollo
 
-- 
 
ac (x=y-1)


 
e se il codice anzichè sull'evento current della subform
lo inserisco su current della form;(modificando i percorsi)
Puo' andare bene ugulamente?
 
grazie di tutto 
 
 

 Puo' andare bene ugulamente?
 
Il codice puoi metterlo dove ti pare.
La questione e' in che stato e' il "territorio".
In quel momento non c'e' nulla da fare le subform non sono "arate". Devi 
aspettare che venga fatta la preparazione del terreno e quello che ti ho 
suggerito (o quello che ha suggerito Popi) e' la via piu' breve.
 
 
P.S. L'unico modo, sempre non facendo le cose a caso, e provare la 
soluzione e osservare il risultato e talvolta chiedersi il perche' la 
cosa funziona o non funziona.
Impara a usare il debug. Una situazione come questa l'avresti risolta in 
mezz'ora (andandoci larghi)
 
-- 
 
ac (x=y-1)

 ha scritto nel messaggio 
news:r2eUq.126632$GZ3....@tornado.fastwebnet.it...

grazie 1000 
 
 

 grazie 1000
 
in questo modo non ho piu' errori
Private Sub Form_Current()
On Error Resume Next
 
If Not IsNull(Me!M_Doc_Fatturati!DDT_Fatt) Then
    Me.AllowDeletions = True
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowDeletions = True
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowEdits = True
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowAdditions = True
 
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowDeletions = True
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowEdits = True
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowAdditions = True
 
    Forms!M_Ordine![M_Trasp_Merce].Form.AllowEdits = True
 
Else
    Me.AllowDeletions = False
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowDeletions = False
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowEdits = False
    Forms!M_Ordine![M_Carichi_da_Fornitore].Form.AllowAdditions = False
 
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowDeletions = False
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowEdits = False
    Forms!M_Ordine![SDettaglioOrdine].Form.AllowAdditions = False
 
    Forms!M_Ordine![M_Trasp_Merce].Form.AllowEdits = False
End If
 
Exit_Form_Current:
    Exit Sub
 
Err_Form_Current:
    MsgBox Err.Description
    Resume Exit_Form_Current
End Sub 
 
 

 End Sub
In queste istruzioni non passera' mai.
Se proprio vuoi fare il sopraffino:
subito prima della attuale
  Exit_Form_Current:
 
.........
if err.number <> 428 then
     MsgBox Err.Description
endif
Exit Sub
 
 
La error resume next dice pressappoco:
Se prendi errore fregatene e prosegui.
L'unico modo per sapere se c'e' stato un errore e' testare la proprieta' 
number dell'oggetto err.
 
 
-- 
 
ac (x=y-1)

 ha scritto nel messaggio 
news:4VeUq.126684$GZ3....@tornado.fastwebnet.it...

ma cosi' ho di nuovo l'errore
 
If Err.Number <> 428 Then
     MsgBox Err.Description
End If
Exit Sub
 
Exit_Form_Current:
    Exit Sub



 
 
-- 
 
ac (x=y-1)

 Exit Sub
Come sarebbe hai ancora l'errore?
L'errore e' evidente che c'e'.
In questo caso dici semplicemente che se l'errore e' diverso dal "428" 
(mi sembra che sia il codice di errore che rilevi) allora evidenzialo 
altrimenti fai conto che non ci sia.
E' quasi impossibile che ci sia un errore diverso da quello che hai 
segnalato ma ove accadesse queste istruzioni consentono di rilevarlo
 
 
 
 
 
-- 
 
ac (x=y-1)

 ha scritto nel messaggio 
news:91hUq.126783$GZ3....@tornado.fastwebnet.it...

grazie Alessandro
ora  va bene
 
Exit_Form_Current:
    Exit Sub
 
Err_Form_Current:
    Select Case Err.Number
        Case 2455
 
        Case Else
            MsgBox Err.Number & Err.Description
    End Select
    Resume Exit_Form_Current
End Sub