Newsgroup: it.comp.appl.access
Titolo: Inserimento in diverse maschere

Salve a tutti,
Devo inserire il cliente in diverse maschere e vorrei farlo utilizzando una
sola maschera-selezione-cliente.. esempio:
Maschera OFFERTE con un controllo IDCliente;
facendo doppio Click sul controllo, apro la maschera SELEZIONA_CLIENTI
 query con i campi principali della tabella clienti) dalla quale scelgo il
cliente selezionandolo con un doppio click e inserendolo nella maschera
OFFERTE con una instruzione tipo Forms!OFFERTE!IDCliente = Me.IDCliente;
subito dopo chiudo SELEZIONA_CLIENTI  ritornando logicamente alla maschera
OFFERTE con i campi del cliente compilati.
Questo dovrei farlo con la maschera OFFERTE, INTERVENTI, CANTIERI ecc ecc...
Come faccio ad inserire i clienti nelle diverse Machere utilizzando sempre
la maschera SELEZIONA_CLIENTI?
devo inserire nella maschera di selezione-clienti un costrutto IF?
IF  OFFERTE è aperta inserisci il cliente
elseif INTERVENTI è APERTA inserisci il cliente
Elseif... ecc ecc?
no non mi sembra normale...
e se ci sono 2 maschere aperte?
bè, datemi una mano su...per me è troppo complicato...
Ciao e Grazie!


[CUT]
Intanto in un modulo generale inserisci questa funzione:
Function Caricata(MiaScheda) As Boolean
' Determina se una scheda è caricata e non è in modalità struttura
    Caricata = False
    Const MOD_STRUTT = 0
    If Application.CurrentProject.AllForms(MiaScheda).IsLoaded Then
        If Forms(MiaScheda).CurrentView <> MOD_STRUTT Then
            Caricata = True
        End If
    End If
End Function
Quindi, quando usi l'istruzione DoCmd.OpenForm (vedi help), come ultimo
parametro passi Me.Name (Il nome della maschera chiamante).
Nella routine evento 'su apertura' della maschera chiamata, vai a vedere se
è stato passato un nome nella proprietà Me.OpenArgs (vedi help) e te lo
salvi in una variabile dichiarata a livello di modulo.
Su chiusura della maschera chiamata, tramite la funzione 'Caricata' di cui
sopra, testi se la maschera chiamante è ancora aperta ed in caso affermativo
gli passi tutti i valori che vuoi.
Ciao.

 ha scritto nel messaggio
news:nbAXa.18953$an6.6...@news1.tin.it...

Grazie Francesco, faccio qualche prova e ti farò sapere :)
Cmq credo che eliminerò qualche controllo...
per esempio non mi interessa sapere se la maschera è aperta in modalità
struttura..
oppure se la maschera chiamante è ancora aperta...
Grazie  e se avrò bisogno romperò ancora... ;)

 ha scritto nel messaggio
news:nbAXa.18953$an6.6...@news1.tin.it...

Ehi, ancora io..
ma una volta salvato il nome della maschera chiamante in una variabile
stringa, come faccio ad usarla per passare il valore dei campi nella
maschera chiamante?
Cioè per passare l' IDCliente dalla maschera chiamata SELEZIONA_CLIENTE alla
maschera chiamante OFFERTE scrivevo:
Forms!OFFERTE!IDCliente = Me.IDCliente;
Ora con il valore della maschera chiamante in una variabile come diventa
l'istruzione?
Scusami ma ti avevo avvertito che avrei ancora rotto...
Ciao

 ha scritto nel messaggio
news:0dBXa.226280$lK4.6...@twister1.libero.it...

EHI Scusami... forse ho trovato...
Salvo Me.Openargs nella variabile stringa NomeMaschera..
Se in tutte le maschere di inserimento utilizzo lo stesso nome per il
controllo IDCLIENTE il gioco è fatto..
quindi:
se il controllo lo chiamo IDCliente (sia nella maschera offerte, interventi,
cantieri ecc ecc)
Se nella maschera SELEZIONA_CLIENTE, su evento doppio click del controllo
IDCliente inserisco...
Forms(NomeMaschera).Form!IDCliente = Me.IDCliente
dovrebbe risolvermi il problema..
è così?
stasera non posso provare.. è tardi e domani si lavora...
ma ti sarei grado se mi confermassi il tutto o correggere o magari
consigliami ancora altre soluzioni...
Grazie Francesco sei stato di molto aiuto :)
Ciao


Bèh, se non sei o sopratutto potrai non essere sempre l'unico utilizzatore
del tuo database, quando dalla maschera chiamata passi l' iDCliente alla
maschera chiamante, sarebbe bene verificare che quest'ultima sia aperta ed
in modalità normale, altrimenti ti verranno a cercare al Polo Nord per
segnalarti un errore banale ma fastidioso.
Ciao.

 > >
[CUT]

Certamente.
Forms(NomeMaschera)!IDCliente = Me.IDCliente
Come sempre ci potrebbero essere altre strade, ma di solito le più
semplici...
Ciao.

 ha scritto nel messaggio
news:jhHXa.19884$an6.7...@news1.tin.it...

Ehi Franscesco, non VA!
ci deve essere qualcosa che non quadra...
Riesco ad aggiornare il controllo ma una volta aggiornato questo non mi vede
l'evendo su DopoAggiornamento con il quale dovrei aggiornare un altro
controllo associato...
praticamente seleziono l'idCliente e sul valore di questo, eseguendo un
DlookUp, aggiorno un altro controllo non associato..
ho scritto un'altro post per il problema che si presenta (non avevo ancora
letto le tue risposte...)
Il post è: "Aggiornare controllo non associato)
se vuoi essere così gentile da darmi ancora qualche consiglio...
Grazie e scusami.


[CUT]
Non ho ancora trovato il modo per far generare un evento di una form o di un
controllo (se qualcuno che sappia come si fa, stesse in ascolto, pardon in
lettura, sarebbe una manna), cosě uso questo sistema:
-Nel modulo VBA della maschera crea una routine definita come pubblica, cosě
che quella routine divenga un metodo della maschera stessa, ad es.
Public Sub AggiornamentiIdCliente()
    'Tue istruzioni
    ...
End Sub
-In questa routine sposti tutte le istruzioni che prima avevi nella routine
evento 'dopo aggiornamento' del controllo.
-Nella routine evento 'dopo aggiornamento' del controllo inserisci:
    Call AggiornamentiIdCliente
-Nel codice dell'altra maschera, dopo l'istruzione in cui aggiorni il valore
del controllo, esegui la seguente istruzione:
    Forms!NomeMaschera.AggiornamentiIdCliente()
Ciao.


Insomma, Forms!NomeMaschera.AggiornamentiIDCliente()
mi richiama la routine pubblica AggiornamentiIDCliente
in questa routine ci metto:
Me.NomeCliente = DlookUp("[NomeCliente]","Clienti","[IDCliente] = " &
Me.IDCliente ) ...
ma l'di cliente della maschera chiamante deve essere ancora aggiornato...
come faccio a trovare il record ?
mah non ci capisco proprio niente :)
scusami Francesco ma non sono molto pratico...
non so se ti va ancora di rispiegarmi questa procedura...
fai tu :)
ciao e grazie

 ciao e grazie
E' che ciò che appare chiaro a chi scrive, spesso non lo è per chi legge.
Ciao.