Newsgroup: it.comp.appl.access
Titolo: chiamata a sub di un altro form, come si fa?

ecco la classica domanda da novellino, vi chiedo un aiuto se no non
vado avanti, dopo un pom di ricerce e tenativi ci espongo la cosa.
Mi trovo in una maschera, precisamente in una sottomaschera, e vorrei
che dopo avere cambiato il valore di un certo campo venga lanciata a
una sub che sta in un'altra maschera, per esattezza nella maschera di
cui è sottomaschera.
Ho provato la guida di access con i comandi Call e GoTo, ma non mi
pare mi possano aiutare visto che sono confinati a lavorare nella
stessa form da cui vegono lanciati.
ora se voglio uscire dal DB o dal progetto la guida dice qualcosa, ma
rimango nel mio DB, ma cambio form che sintassi devo usare?
Grazie a tutti

 ha scritto nel messaggio
news:6lf1lvcau0etoc8aa...@4ax.com...

Perchè non rendi la funzione da privata a pubblica?
Dovrai fare delle opportune modifiche come anzichè usare Me! usare
Forms!TuaMaschera!TuoControllo, ma per il resto resta tutto invariato.
La funzione pubblica in un modulo pubblico è richiamabile da tutto il db.
Ciao, Carlo

 ha scritto nel messaggio
news:bog3lvcfvvj0irvg2...@4ax.com...

Non puoi scrivere Public se la funzione si trova nel modulo di una maschera
(privao, quindi).
Riscrivi la funzione (public) in un nuovo modulo.
Ciao, Carlo

Riscrivi la funzione (public) in un nuovo modulo.
Questo non lo sapevo, anzi avevo controllato che questo modulo di
classe, ho scoperto che l'insieme di routine di una maschera si chiama
così, non ha password e non è protetto dalla visualizzazione.
Ora se la mia routine è
Private Sub Salva_Click()
Me.Subtotale_ordini = [Sottomaschera Dettagli ordini].Form![Subtotale
ordini]
Me.Subtotale_Vendor = Me![Sottomaschera Dettagli
ordini].Form![Subotale vendor]
Me.Imposta__vendite = CLng([Subtotale ordini] * [%ImpostaVendite] *
100) / 100
Me.IVA_Fornitore = CLng([Subtotale Vendor] * [%ImpostaVendite] * 100)
/ 100
Me.Totale_Fornitori_Ivato = Me.Subtotale_Vendor + Me.SpeseTrasporto +
Me.IVA_Fornitore
Me.Totale_ordini = Me.Subtotale_ordini + Me.SpeseTrasporto +
Me.Imposta__vendite
Me.GuadagnoNegozio = 0.5 * Me.Totale_ordini - 0.5 *
Me.Totale_Fornitori_Ivato
Me.GuadagnoRoberto = 0.5 * Me.Totale_ordini - 0.5 *
Me.Totale_Fornitori_Ivato
Me.ImportoDovuto = [Totale ordini] - Nz([Totale pagamenti])
End Sub
Dove leggo Me riscrivo Forms!MiaMaschera!MioControllo
ma le parentesi quadre non ricordo più cosa significhino, le ho usate
molto tempo fa ... 

 ha scritto nel messaggio
news:s4t3lvsmo31a6d2hp...@4ax.com...

In pratica tutti i riferimenti alla maschera locale vanno scritti in modo
esplicito.
Così: Me.Subtotale_ordini = [Sottomaschera Dettagli ordini].Form![Subtotale
ordini]
diventa: NomeMascheraPrincipale!SubTotale_Ordini =
Forms!NomeMascheraPrincipale![Sottomaschera Dettagli ordini].Form![Subtotale
ordini]
Ecc..
Ricorda che funziona sempre il generatore di espressioni che fa tutto per
te.
Apri la maschera, con la sottomaschera, in visualizzazione struttura...
Se hai Access 97 apri il modulo dove metterai la funzione e con il pulsante
destro del mouse seleziona "Genera". Qui farai riferimento alla maschera
aperta e al controllo che ti serve. Copia e incolla la giusta sintassi.
Se hai Access 2000/Xp dovrai usare un artifizio perchè il generatore non è
disponibile nei moduli.
Devi creare una nuova maschera (che poi non salvi), apri le proprietà della
maschera e usa il generatore (...) che trovi alla fine della riga di quasi
tutte le proprietà (dopo averla selezionata). Per il resto come sopra.
Ciao, Carlo