Newsgroup: it.comp.appl.access
Titolo: Sapere da quale form proviene il click

SAlve,
qualche tempo fa avevo letto qualcosa ma non riesco a ritrovarla....
Vorrei sapere se esiste il modo per recuperare il nome della form da cui 
proviene il click.
Access 2007 e VBA.
Saluti 

 ha scritto nel messaggio 
news:4b31f1ec$1...@news.x-privat.org...

Quello a cui forse ti riferisci � l'OpenArgs dell'apertura form
Docmd.OpenForm .... 

 ha scritto nel messaggio 
news:4b31f1ec$1...@news.x-privat.org...

Screen.ActiveForm.Name
Buon Natale
Graziano 


Ma questo non mi recupera SOLO il nome della form attuale ?
Io dovrei sapere quale form mi sta aprendo un'altra form in modo da non 
doverne fare decine uguali...
Spero di essere stato chiaro.
Saluti e buona festa. 

 Spero di essere stato chiaro.
No.
Forse la risposta di Massimiliano ï¿œ questo che cerchi, ma non ï¿œ
chiaro se non sei piï¿œ preciso. Spiegiti con un esempio passo a
passo cosa vuoi fare e dove e come vuoi usare il nome della
maschera attuale.
-- 
cu
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 ha scritto nel messaggio 
news:4b31f1ec$1...@news.x-privat.org...

Il click sulla form o si di un pulsante in una form?
Nel secondo caso, ma anche nel primo, potresti crearti una variabile 
globale:
Dim MioNomeForm as String (in un modulo pubblico).
Al click del pulsante, oltre alle istruzioni che ti servono:
MioNomeForm = Me.Name
A questo punto la variabile � valorizzata, per leggerla e usarla puoi 
crearti una piccola funzione:
Public Function DimmiNomeMaschera()as string
DimmiNomeMaschera = nz(MioNomeForm,"")
End function
La funzione verr� usata nello spezzone di codice che devi usare per sapere 
qual'� il nome della maschera...Per esempio:
If DimmiNomeMaschera = "" then
exit sub
else
select case DimmiNomeMaschera
Case "Maschera1"
'fai questo
Case "Maschera2"
'fai quest'altro
end select
end if
Ricordati alla fine (se non ti serve pi�) di riportare a "" il valore della 
variabile:
MioNomeForm = ""
Ciao, Carlo 

 MioNomeForm = ""
Grazie a tutti, spiego meglio.
Ho una maschera "Inserimento" che al click su un bottone per far una ricerca 
in anagrafica per la scelta del cliente richiama una maschera 
"CercaAnagrafica", faccio la ricerca, al click su un bottone mi riporta 
sulla maschera "Inserimento" i campi dell'anagrafica selezionata.
Ora dato che questo meccanismo mi si ripete in molte maschere e per 
valorizzare le textbox della maschera chiamante devo sapere da quale 
maschera proviene il click di Ricerca, in questo esempio � la Form 
"Inserimento", volevo fare una procedura unica per tutti.
Ho provato con OpenArgs ma non mi funziona molto bene e non capisco perch� 
dato che debuggando il nome della form � giusta...
In attesa di qualche altra idea o se esiste un comando specifico, uso la 
dritta di Carlo.
Saluti 

 ...
Di solito si usa OpenArgs per questo. Cio� per aprire
la maschera di ricerca:
DoCmd.OpenForm "CercaAnagrafica", , , , , , Me.Name
Poi nel codice della maschera di ricerca puoi usare:
Me.OpenArgs
per ricevere il nome della maschera che l'ha aperta.
Se non funziona non serve "non mi funziona molto bene"...
Invece devi copiare/incollare il tuo codice e/o descrivere cosa hai provato.
-- 
HTH


 Access FAQ: 
www.donkarl.com/it
OPS !!! Sbagliavo io, la funzione che veniva richiamata con Me.OpenArgs NON 
era Public, lo era solo in una mschera....
Scusate..... mea culpa...
Saluti 


Visto che VBA non ha il riconoscimento dello stato di un pulsante (tipo il
'premuto' del C++), personalmente per questo genere di operazioni io uso un
altro metodo
I casi essenzialmente sono 2: o cerchi un nome dall'anagrafica in maniera +
complessa che una combo, o ne devi inserire uno nuovo (notinlist).
Allora, se non trovo il nome nella combo, schiaccio un tasto (o un bottone) e
apro la maschera di ricerca con questo codice
docmd.openform "NomeMaschera",,,,acDialog
cerco quello che devo cercare e poi chiudo la form con
docmd.openform "NomeMaschera",,,acHidden
Controllando l'errore 2450 (mi pare) comandi la form direttamente dalla
maschera che l'ha chiamata. A questo punto da ogni parte dell'applicativo
basta che usi lo stesso codice sull'evento (per esempio) tasto gi�:
if KeyCode=F7 then
me.ComboNome=""
docmd.openform "NomeMaschera",,,,acDialog
me.comboNome.value=Forms!NomeMaschera.Nome.value
docmd.CloseForm "NomeMaschera"
end if
Uscita:
Exit sub
Err_Desc:
if err.number=2450 then resume uscita
Aggiorni la combo (� similare anche inserimento di una nuova anagrafica) da
ogni form che vuoi sempre con lo stesso codice. Puoi anche fare una funzione
globale, cos� hai un solo punto d'entrata e se devi cambiare qcosa fai prima
Ho scritto il codice di getto, non assicuro che sia perfetto!!!!!!
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it