Newsgroup: it.comp.appl.access
Titolo: NEWBE Passare il valore a una maschera in popup

Salve!
Vi chiedo un aiuto, non sono bravo con access....
Ho una form dove seleziono ad esempio, il cognome, e quindi si
valorizza anche il campo codice della persona.
Clicco sul bottone per aprire una maschera per aggiungere altri dati a
quella persona.
Vorrei ora che in un'altra form che compare in popup si riempia il
campo codice di quella persona per aggiungerci dati.
I 2 form fanno riferimento a 2 rispettive tabelle, collegate tra loro
dal codice della persona con relazione 1 a 1.
Forse è banale ma se potete darmi una indicazione ve ne sono grato!
Ciao, Fabio

 Forse è banale ma se potete darmi una indicazione ve ne sono grato!
Scusa, non capisco.
Hai un record nella prima tabella, quando apri la popup cosa devi
fare? Creare il record correlato nella seconda tabella? O deve andare
a cercare i dati gia' esistenti nella seconda tabella, per
modificarli?
E se il record nella seconda tabella esiste gia', cosa deve succedere?
In ogni caso non e' difficile, basta riferirsi al campo codice nella
maschera iniziale...
=forms!NomeMascheraIniziale!CampoContenenteIlCodice
e sbattere questa roba nel valore predefinito del campo codice nella
popup.
Occhio a cosa puo' succedere se il record esiste gia', pero'....
cia'
Max

Scusami tu, non conoscendo bene access non mi esprimo di sicuro in
modo chiaro.
Si, ho il record già riempito nelaa tabella 1, assieme ai campi nome
cognome ecc
ho poi una tabella vuota e nuova che ha lo stesso campo codice persona
con il join 1 a 1 con il codice persona della tabella 1.
nella tabella 2, con il codice persona, vorrei aggiungere indirizzo
num.telefono e email
 Ho quindi 2 maschere per ciascuna tabella.
Nella maschera 1 sfoglio i dati della tabella 1 e quando clicco su un
suo bottone mi si apre la maschera 2 con il campo codice persona già
popolato con lo stesso codice persona che in quel momento c'è nella
maschera 1 , per aggiungerci i dati indirizzo, tel email.
Io ho fatto maschere bottone tabelle e il join ma quando in maschera 1
ho codice persona X e clicco sul bottone, mi si apre la maschera 2 con
codice persona a 0.
(Bè giustamente visto che non ho scritto ancora nulla nella tabella
2....E non so come passare il cod.persona in maschera1 alla maschera2)
Grazie per una tua risposta, già quella di prima può aiutarmi
Fabiocr


 codice persona a 0.
Secondo me ti stai complicando inutilmente la vita con la maschera
popup... visto che la relazione e' 1:1 io baserei la maschera su una
query che comprende entrambe le tabelle, magari utilizzando una
struttura a schede per dividere i dati di diversa natura. Al limite,
puoi anche usare una sottomaschera, di certo e' piu' facile da gestire
(anche se per una relazione 1:1 e' sprecata)
Tieni conto che con la maschera popup:
- Devi impedire che l'utente scorrazzi liberamente tra i record
- Devi controllare che non esista gia' un record in Tabella2 per la
persona che stai gestendo; sarebbe carino che, in caso esista gia' il
record, la maschera si posizioni automaticamente sul record giusto
(permettendoti di fare correzioni ai dati) anziche' presentarti i
campi vuoti
- Devi escogitare un sistema per impedire che l'utente crei due volte
lo stesso record (Ci riesce, ci riesce... l'utonto e' piu' ingegnoso
delle precauzioni piu' raffinate che puoi prendere per impedirgli di
far danni)
- Devi prevedere cosa succede in casi bizzarri... esempio, l'utonto
che cerca di aprire la popup quando non e' selezionato alcun nome
nella maschera principale
Insomma... tante rogne, pochi vantaggi...
Comunque, se proprio vuoi la maschera popup...
nell'evento Open della maschera fai in modo che cerchi il valore
corrispondente: se lo trova, si sposta su quel record, se invece non
lo trova, si sposta su un nuovo record vuoto:
Dim P As DAO.Recordset
Set P = Me.RecordsetClone
P.FindFirst "[Codice]=" & Forms!MascheraPrincipale!Codice
If P.NoMatch Then
    DoCmd.GoToRecord acActiveDataObject, Me.Name, acNewRec
    Me.Codice = Forms!MascheraPrincipale!Codice
    Else
    Me.Bookmark = P.Bookmark
    End If
cia'
Max
Inoltre, quando l'utente ha terminato l'inserimento e aggiornato il
record (evento Afterupdate), chiudi la maschera.
Gigantesco punto debole: se l'utente cambia record *prima* di
modificarlo, va a pastrugnare con gli altri record, e tu *non vuoi*
che questo succeda.
Si puo' prevenire anche questo (fai sparire i pulsanti di spostamento
e intercetti le pressioni di PGup, PGDn e la rotella del mouse), ma ne
parleremo un'altra volta.
cia'
Max

Ho usato la prima riga di codice che mi avevi consigliato...Prima di
avventurarmi con il resto che mi hai scritto, e cioè:
=forms!NomeMascheraIniziale!CampoContenenteIlCodice
In effetti ora nella maschera ho il codice persona ma non lo scrive
nella tabella 2! La tabella 2 parte vuota per essere "popolata" da qui
codice persona alle quali aggiungo i dati in tabella 2.
Ho già usato una sottomaschera all'interno della maschera principale e
non ho alcun problema, mentre con la maschera in popup (che mi tocca
usare per motivi di spazio) adesso, grazie al tuo aiuto, ho il codice
persona riempito in maschera, aggiungo dei dati ma poi nella tabella 2
non ho il campo codice cliente scritto e a volte scrive ciò che
aggiungo e a volte no.....
In pratica è come se nella maschera2 ciò che c'è scritto non va poi
nella tabella2.
Continuo provando le altre strade che mi hai suggerito, soprattutto di
usare una query che unisca le 2 tabelle....
Grazie davvero.
Fabio
'Roccia' Max ha scritto:


 - Mostra testo tra virgolette -