Newsgroup: it.comp.appl.access
Titolo: Richiamare una routine da una maschera in una sottomaschera

Ciao a tutti
ho una routine che mi esegue dei calcoli complessi
in una sottomaschera, vorrei lanciarla dalla maschera
a cui è associata la sottomaschera, premetto che
non posso spostarla in un modulo perchè dovrei
riscrivere tutti i riferimenti ai controlli della sottomaschera
come posso fare ?
Grazie

 come posso fare ?
Nella dicchiarazione della routine cambia "Private" a "Public".
Adesso puoi chiamare la routine dalla maschera principale con:
Me!NomeControlloSottoMaschera.Form.NomeProcedura
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 Access FAQ:
www.donkarl.com/it
Grazie Karl
ma per funzionare con la tua istruzione, dopo aver
aggiornato il campo mi devo posizionare con il
mouse su un controllo qualsiasi della sottomaschera
ho provato ad inserire dopo la tua  istruzione
un refresh, requery o recalc ma mi da un errore
?

 ?
Non capisco cosa vuoi fare o cos'� il problema.
Se non ti risponde nessuno prova a spiegarti in modo diverso.
-- 
cu


 Access FAQ:
www.donkarl.com/it
Grazie Karl
ma per funzionare con la tua istruzione, dopo aver
aggiornato il campo mi devo posizionare con il
mouse su un controllo qualsiasi della sottomaschera
ho provato ad inserire dopo la tua  istruzione
un refresh, requery o recalc ma mi da un errore
?
----------  RISPOSTA  -----------
Vediamo se possiamo carpirci meglio.
Hai una maschera m.A con una sottomaschera sm.B e, forse, nella sm.B c'� un 
pulsante che esegue una routine complessa. Vorreti spostare questo pulsante 
da sm.B nella maschera m.A e Karl ti ha indicato come scrivere l'istruzione 
all'interno del pulsante trasferito.
Se ho indovinato lo scenario, cosa c'entra il refresh o il doversi spostare 
sulla sottomaschera ? Oppure non � questo lo scenario da sistemare ?
Ciao
Antonio

 Oppure non � questo lo scenario da sistemare ?
Ah, sono sempre contento quando vedo che non �
il mio male italiano... :-)
-- 
cu


 Antonio
Non proprio, allora la routine è nella sottomaschera B ma a me serve
richiamarla dalla mashera A quando un campo (spede di deposito) viene
aggiornato, con l'istruzione di Karl la cosa funziona ma solo quando
dopo aver variato il valore del campo della maschera A clicco col
mouse
su qualsiasi campo della sottomashera B, ho prova sia sul
beforeupadate
che con l'afterupdate del campo ma è la stessa cosa, cosa mi
suggerite ?

 Access FAQ:
www.donkarl.com/it
è corretto in tutti e due i modi
1) Non hai centrato il discorso = Centrare il discorso (fare centro)
voce del verbo centrare
2) Non c'entra in questo discorso = non ci entra in questo
discorso (entrare)
voce del verbo entrare

 Antonio
Non proprio, allora la routine � nella sottomaschera B ma a me serve
richiamarla dalla mashera A quando un campo (spede di deposito) viene
aggiornato, con l'istruzione di Karl la cosa funziona ma solo quando
dopo aver variato il valore del campo della maschera A clicco col
mouse
su qualsiasi campo della sottomashera B, ho prova sia sul
beforeupadate
che con l'afterupdate del campo ma � la stessa cosa, cosa mi
suggerite ?
-------------  RISPOSTA  --------------
Quindi tu dici che lo spostamento del pulsante funziona solo se prima entri 
nella sottomaschera. Mi viene da pensare che nella sottomaschera ci possa 
essere una routine in Form_Open o in Form_Load che imposta qualche campo di 
memoria o qualche controllo della sottomaschera che poi viene utilizzato 
dalla routine. In questo caso, devi fare in modo che il pulsante inserito 
nella maschera principale valorizzi quei campi prima di entrare nella 
routine.

 routine.
Niente da fare non posso richiamare quella funzione è come
dici tu, quindi avrei pensato di fare cosi
Me!SpeseTrasporto = (Me!totale_imponibile * Me!
PercentualeSpeseTrasporto) / 100
ma non funziona nemmeno così in quanto sia SpeseTrasporto sia
Totale_Imponibile
sono campi calcolati, come posso risolvere ?
Forse è meglio se spiego tutto per bene anche se è un po lungo:
la maschera e la sottomaschera sono l'interfaccia per la gestione
degli ordini. Le spese di trasporto devono essere calcolate su ogni
articolo in base all'aliquota stabilita per quel fornitore (campo
PercentualeSpeseTrasporto).
Questo ed altri calcoli sono assolti da una routine all'interno della
sottomaschera.
Dopo 3 anni di funzionamento ok  "l'utilizzatore finale" vuole - a
volte cambiare al volo
detta aliquota quando ad esempio il cliente paga in contanti. Quindi
modificando a mano
detta aliquota, all'interno della maschera,  dovrebbe ricalcolare
l'importo di   SpeseTrasporto.
Siccome non mi va di riscrivere tutto da capo cercavo una soluzione
rapida ed
efficace.

 routine.
Niente da fare non posso richiamare quella funzione � come
dici tu, quindi avrei pensato di fare cosi
Me!SpeseTrasporto = (Me!totale_imponibile * Me!
PercentualeSpeseTrasporto) / 100
ma non funziona nemmeno cos� in quanto sia SpeseTrasporto sia
Totale_Imponibile
sono campi calcolati, come posso risolvere ?
Forse � meglio se spiego tutto per bene anche se � un po lungo:
la maschera e la sottomaschera sono l'interfaccia per la gestione
degli ordini. Le spese di trasporto devono essere calcolate su ogni
articolo in base all'aliquota stabilita per quel fornitore (campo
PercentualeSpeseTrasporto).
Questo ed altri calcoli sono assolti da una routine all'interno della
sottomaschera.
Dopo 3 anni di funzionamento ok  "l'utilizzatore finale" vuole - a
volte cambiare al volo
detta aliquota quando ad esempio il cliente paga in contanti. Quindi
modificando a mano
detta aliquota, all'interno della maschera,  dovrebbe ricalcolare
l'importo di   SpeseTrasporto.
Siccome non mi va di riscrivere tutto da capo cercavo una soluzione
rapida ed
efficace.
---------  RISPOSTA  --------------
Qualche parola in pi� per farci capire meglio sarebbe stata gradita. Vediamo 
se con un po' di immaginazione riesco a sopperire a questa carenza.
Hai una maschera che visualizza un ordine ed una sottomaschera che elenca 
tutti gli articoli dell'ordine stesso. Ogni articolo contiene un campo (e 
relativo controllo sulla sottomaschera) che contiene l'aliquota per il 
calcolo delle spese di rasporto da richiedere in rivalsa al cliente che sta 
concludendo l'ordine di acquisto. L'utilizzatore del tuo programma vuole 
poter modificare a volo l'aliquota detta prima, e il nuovo valore dovr� 
essere assunto per tutti gli articoli dell'ordine.
Innanzi tutto io starei molto attento a non modificare (se reputi che non si 
debba fare) l'aliquota nella sottomaschera, perch� correresti il rischio 
che, se non progettata in modo particolare, scatenerebbe l'aggiornamento dei 
records associati, modificando in modo "perenne" quell'aliquota che tu 
credevi di variare solo occasionalmente.
Quindi, considerato che l'aliquota presente nella sottomaschera � associata 
ad un campo del record articolo, modificarei la routine almeno in parte 
prevedendo di richiamarla con l'aggiunta del parametro Aliquota. La routine, 
a seconda di come � valorizzato il suddetto parametro, dovr� essere in grado 
di effettuare tutti i complessi calcoli una volta con l'aliquota presente 
nei records articoli ed una volta col valore passatogli come parametro.
Ciao
Antonio

 Antonio
Grazie proverò

 Grazie prover�
Ma.........hai provato semplicemente a cambiare la routine da Private a 
Public???
Ciao
-- 
Roberto da Parma