Newsgroup: it.comp.appl.access
Titolo: Ragionare al contrario

Sono sempre stato abituato che in Access si lavora così: hai un oggetto
(mettiamo una maschera) su cui ci sono i comandi per fare qualcosa; a
questi comandi corrisponde del codice. Mi trovo nella situazione in cui
il codice in questione dovrà aprire una maschera (molto complessa
invero) per far operare una scelta all'utente. Come può essere fatto
tutto ciò?
Grazie.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote:
La sfinge era meno criptica:)
Puoi spiegare meglio cosa devi fare?Detto così sembra che tu debba
richimare una mascehra esterna a quella in cui inserisci i comandi.



non ho capito benissimo, ma prova a dare un'occhiata al comando
docmd.openform
da quello che ho capito dovresti metterlo alla fine della prima parte del
codice.
ti apparirà la finestra.
poi con un bottone sulla finestra, confermi e fai proseguire il codice.
ciao
Lenny

 tutto ciò?
Se a un certo punto il codice dice DoCmd.OpenForm "miamaschera" non va bene?
Per caso la maschera subito dopo si chiude, e il codice passa oltre?
Io ho risolto congelando aperta la maschera con un codice tipo
...
DoCmd.OpenForm "Miamaschera"
        Do While IsFormLoaded("miamaschera")
            DoEvents
        Loop
...
Il codice viene sospeso per "fare alcune cose" (Do Events) fintantoche' la
miamaschera resta aperta. Quando la maschera viene chiusa, il codice
prosegue. Se non la chiudi, occhio allo stack.
La funzione che valuta se la maschera e' caricata e':
Public Function IsFormLoaded(pstrFormName As String) As Boolean
        IsFormLoaded = SysCmd(SYSCMD_GETOBJECTSTATE, A_FORM, pstrFormName)
<> False
End Function
Sul benemerito sito comune  ho trovato questa'altra, concettualmente
analoga:
 '(oppure)
 Public Function FormIsOpen(FormName As String) As Boolean
    'Autore: AntoGal
    'Accetta: FormName = nome della maschera
    'Restituisce: true se la maschera è aperta
    FormIsOpen = (SysCmd(acSysCmdGetObjectState, acForm, FormName) And _
          acObjStateOpen) <> False
 End Function
 Ciao
B.

 richimare una mascehra esterna a quella in cui inserisci i comandi.
Scusami. Comunque hai capito bene: devo richiamare una maschera esterna
passando dei dati, far fare delle scelte all'operatore e restituire i
dati opportunamnete trattati alla maschera precedente.


quello che tu mi suggerisci sembra fare al caso mio, ma come faccio a
passare dei dati dalla maschera iniziale a quella che apro dopo?



se tieni aperta la maschera, ti basterà leggere i valori nelle caselle della
maschera stessa
in questo modo.
forms!nomemaschera!nomecasella
ad esempio
maschera1 è la tua iniziale e hai casella1
maschera2 è la seconda che apri con una casella2
basterà che dopo aver aperto la maschera scrivi
....
...
docmd.openform maschera2          ' apre la maschera
forms!maschera2!casella2 = forms!maschera1!casella1  'inserisce il valore
....
...
ciao
lenny

 passare dei dati dalla maschera iniziale a quella che apro dopo?
In generale, io farei che la maschera figlia fa riferimento all'elemento
della maschera madre usando una sintassi estesa
[forms]![mascheramadre].elemento
il che vale se e finche' la mascheramadre resta aperta. Nella fattispecie
dovresti fare un esempio di come e perche' una maschera riceve dati da
un'altra maschera.
Di solito se la maschera madre resta aperta, non e' necessario che la
maschera figlia ne erediti i contenuti, per potersene servire  come filtri,
estremi di ricerca ecc. nell'ambito di query successive. Nella query  puoi
mettere dei criteri che facciano riferimento direttamente a qualunque
maschera, purche' aperta, ad esempio se la maschera ha due texbox dove metti
data iniziale e data finale, la query puo' usare qs. due date, tiri giu' il
campo data e alla riga criteri scrivi
Between CVDate([forms]![miamaschera].[DADATA]) And
CVDate([forms]![miamaschera].[ADATA])
ciao
B.

 passare dei dati dalla maschera iniziale a quella che apro dopo?
In generale, io farei che la maschera figlia fa riferimento all'elemento


Ottimo, grazie!


Grazie mille, non credevo fosse cosě semplice!
