Newsgroup: it.comp.appl.access
Titolo: problema con openargs

Ciao a tutto il NG
Ho un banale problema che perň non riesco a risolvere perciň mi rivolgo a
voi
Allora apro una maschera passando openargs =2 cosě
 DoCmd.OpenForm stDocName, , , stLinkCriteria, , , 2
Questa maschera che viene aperta č costituita da maschera + sottomaschera,
ho bisogno che un pulsante sia visibile solo
nel caso in cui la maschera venga aperta  con openargs=2
alllora su apertura della maschera principale ho inserito questo :
Private Sub Form_Open(Cancel As Integer)
If Me.OpenArgs = 2 Then
    Forms![M_principale]![M_sottomaschera].Form![Comando10].Visible = True
Else
   Forms![M_principale]![M_sottomaschera].Form![Comando10].Visible = False
End If
End Sub
Secondo me la sintassi č corretta, ma continuo ad avere questo problema:
impossibile trovare il campo M_sottomaschera a cui fa riferimento
l'espressione.
Forse perchč non si puň nascondere cosě il pulsante ??
Il pulsante in questione avvia una serire di accodamenti, che possono essere
fatti solamente aprendo la maschera da una particolare maschera, altrimenti
non si deve poter vedere il pulsante per evitare errori.
Grazie, ciao Sandro

 Grazie, ciao Sandro
Cito l'Help di Access:
È possibile utilizzare la proprietà OpenArgs per determinare
l'espressione stringa specificata dall'argomento aprearg del metodo
OpenForm che ha aperto una maschera.
Se non sbaglio non stai passando una Stringa ma un Integer....!
DoCmd.OpenForm stDocName, , , stLinkCriteria, , , "2"
 If Me.OpenArgs = "2" Then
Oppure:
Dim intArg as integer
intArg=cInt( Me.OpenArgs)
 If intArg = 2 Then
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 ha scritto nel messaggio
news:cn31d1$eof$1...@lacerta.tiscalinet.it...

 Ciao
No il passaggio dei parametri sembra corretto prova a cambiare l'istruzione
così,
If Me.OpenArgs = 2 Then
     me.M_sottomaschera.Form.Comando10.Visible = True
Else
    me.M_sottomaschera.Form.Comando10.Visible  = False
 End If
Saluti
Cinzia


Ciao Cinzia :
Allora if Me.OpenArgs = 2 'mi dice l'azione open form č stata annullata,
        else
            non apre proprio la maschera senza darmi alcun messaggio.
Ciao

 Cinzia
Deve essere una STRINGA come ho già detto nel post precedente e come
indicato nell'Help.
Saluti


 Intanto che ci pensi continuo a provare. Ciao.
Questo va bene:
DoCmd.OpenForm stDocName, , , stLinkCriteria, , , "2"
Nella Form che apri su evento Load metti questo:
If Me.OpenArgs = "2" Then
   Me![M_sottomaschera]![Comando10].Visible = True
Else
   Me![M_sottomaschera]![Comando10].Visible = False
End If
Ciao


 indicato nell'Help.
Ciao Alex, Ciao Cinzia
If Me.OpenArgs = 2 Then
    me.M_sottomaschera.Form.Comando10.Visible = True
non va
 If Me.OpenArgs ="2" Then
    me.M_sottomaschera.Form.Comando10.Visible = True
non va
If Me.OpenArgs = "2" Then
    Forms!M_principale.M_sottomachera.Form!Controls.Comando10.Visible = True
(controllando l'Help di access)
non va (indipendentemente da stringa o valore numerico)
Per Alex : ho provato ad impostare l'openars a stringa nell'altra meschera
(quella del post precedente) e funziona anche con stringa
L'istruzione DoCmd.OpenForm stDocName, , , , , , "1" oppure DoCmd.OpenForm
stDocName, , , , , , 1
funzionano entrambe.
L'errore è nell'impostare il .visible sul combut della sottomaschera
partendo dalla maschera pricipale.
io continuo a provare. Ciao.
ps.intanto ho risolto in modo orribile costruendo la stessa maschera, senza
il bottone ....nooooooo , che tristezza

 Ciao
ho provato anche questo dopo l'invio della mail delle 23.53.
Ho provato l'evento load sia sulla maschera che per curiosità anche nella
sottomaschera, ma mi da impossibile trovare il campo


 Grazie, ciao Sandro
Io ho provato a riprodurre su un esempio la situazione da te illustrata ed a
me funziona tutto: se apro M_principale da VBA con:
DoCmd.OpenForm stDocName, , , stLinkCriteria, , , 2
il pulsante di comando Comando10 contenuto nella sottomaschera è visibile,
in caso contrario non è visibile.
Da ciò si desumono due cose:
1) Il valore dell'argomento apriarg del metodo OpenForm non deve essere
necessariamente una stringa ma può essere un numero e quindi così come
scritto da te va bene (la cosa è dimostrata dal fatto che a me funziona
egregiamente).
2) Ti rammento che [M_sottomaschera] NON DEVE essere il nome della
sottomaschera, ma DEVE ESSERE il nome del controllo sottomaschera contenuto
nella maschera principale [M_principale] e che contiene la sottomaschera: al
limite i due nomi possono coincidere. Penso che invece nel tuo caso forse la
sottomaschera si chiama M_sottomaschera, ma penso proprio che così non si
chiami il controllo sottomaschera che la contiene, quindi Access ti segnala
giustamente errore non trovando tale controllo nella maschera principale.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Non ho capito perchè l'Help e pure MSDN in rete dà l'associazione alla
STRINGA
ed in effetti funziona anche con un valore numerico.
Mi sarei aspettato che il passaggio del parametro avrebbe avuto
eventualmente la
conversione automatica in stringa e che quindi il recupero fosse
obbligatorio il
confronto Stringa......!
Boh...!


 giustamente errore non trovando tale controllo nella maschera principale.
GRAZIE !!!!!
era proprio questo il problema !
Il fatto č che per essere sicuro di come dovesse essere scirtta l'istruzione
l'aveo dapprima
generata con il generatore di espressioni e molto superbamente andavo
correggere io access
indicandogli in nome della maschera !
Ha sempre ragione lui.!
Ciao Roberto.ti ringrazio

 @Alex (Alessandro Baraldi)
-- 
