Newsgroup: it.comp.appl.access
Titolo: tabelle collegate- query

Salve,
sto cercando di completare con Access2000 un database pazienti che comprende
due tabelle. La prima tabella ha una chiave primaria (IDPaziente) che č
ripetuta nella tabella 2 (Interventi). Quest'ultima ha IDInterventi come
chiave primaria.
Ho collegato le due tabelle nei due campi ripetuti con una relazione di uno
a molti (ogni paziente puň essere associato a piů interventi).
Nella maschera relativa alla tabella 1 vorrei creare un pulsante di comando
che mi consentisse di aprire la maschera della tabella 2 allo stesso record
aperto nella maschera della tabella 1 per poter aggiungere o aggiornare i
dati dell'intervento.
Ovvero: se mi trovo sulla scheda del paziente X , premendo il pulsante
Interventi , vorrei che si aprisse la scheda interventi del paziente X e non
del primo paziente presente nella tabella 2.
Qualcuno puň aiutarmi?
Grazie in anticipo
Al

 ha scritto nel messaggio
news:ansbs1$hct$1...@lacerta.tiscalinet.it...

Comando docmd.openform
se guardi l'help vedi che c'č il parametro criterio WHERE ed anche un
bell'esempio d'uso
Antonio

 Al
Problemi come il tuo non si risolvono aprendo due maschere separate e
sincronizzandole, ma con la tecnica della maschera/sottomaschera:
nella tabella relativa alla tabella 1 devi inserire (al limite con
l'autocomposizione controllo, così è più facile) un controllo sottomascherà
che deve contenere la maschera (immagino con visualizzazione a Maschere
continue) che ha come origine record la tabella 2.
Così facendo, se hai risposto correttamente al wizard di autocomposizione
controllo, per ogni paziente che visualizzerai nella maschera principale
vedrai nella sottomaschera i relativi interventi.
Se poi proprio vuoi tenere le due maschere separate e sincronizzate,
inserisci nella prima maschera il pulsante di comando con l'autocomposizione
controllo scegliendo nella prima finestra del wizard tra le Categorie:
Operazioni su maschere e nelle Azioni: scegli Apri maschera; quindi quando
il wizard te lo chiederà pigia il bottone a sinistra di Apri la maschera e
trova dati specifici da visualizzare; quindi seleziona la scelta che ti
permette di visualizzare nella seconda maschera solo i record per i quali
IDPaziente è uguale a IDPaziente della prima maschera.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Era qui il mio problema. Avevo già provato questa soluzione ma il pulsante
di comando mi rimanda alla maschera aperta al primo record anzichè a quello
corrente sulla prima maschera. Tenendo conto che:
[Maschera1] [IDPaziente] oppure [Testo126] è il controllo al quale voglio si
adegui la maschera della seconda tabella,
e [Tabella 2 Query] [IDPaziente] è il dato che vorrei si adeguasse. Ho
scritto :
[IDPaziente]=[Forms]![Maschera1]![Testo126] come condizione per la macro
associata al pulsante di comando.
Il risultato è che si apre la maschera al record 0.
Nota che se faccio partire la macro direttamente mi si apre una finestra di
dialogo che chiede:
Forms!Maschera1!Testo126. Se inserisco 4 , sperando che mi si apra la
maschera interventi al record 4, mi ritorna sempre quella al record 0.
Ho fatto qualche grossolano errore?
Grazie
Al

 controllo scegliendo nella prima finestra del wizard tra le Categorie:
(...)
Ti ringrazio per la risposta esaustiva. In effetti ho provato anche
quest'ultima strada che mi hai suggerito. Il risultato č che quando premo il
pulsante nella maschera 1 ottengo l'apertura della maschera relativa alla
tabella 2 al record 1. Se passo al paziente nr.2 , nella maschera interventi
l'IDIntervento procede come un normale contatore, mentre l'IDPaziente resta
sempre ad uno.
Io pensavo di ottenere invece una maschera in cui l'IDPaziente resta fisso
all'ID della maschera principale mentre l'IDIntervento fa il suo dovere di
contatore (segnando cumulativamente gli interventi di tutti i pazienti messi
insieme).
Sono sempre piů convinto di aver commesso qualche grossolano errore. Grazie
per la risposta :)
Al.

 associata al pulsante di comando.
No no onnonononon
Il criterio where parametro della docmd.openform è una stringa
Quando si deve preparare una stringa con delle parti costanti e dei valori
presi dentro variabili o controlli, si deve usare la concatenazione.
Pertanto:
crit = "[IDPaziente]=" & [Forms]![Maschera1]![Testo126]
docmd.openform "form2",,crit
tieni presente che idpaziente deve essere il nome del  campo (non del
controllo) della query origine record della maschera 2.
Che così va bene se idpaziente è numerico altrimenti devi circondare il
valore con degli apici
Che, visto che la docmd.openform la esegui sulla form 1 e che testo126 è
della form 1, puoi tranquillamente usare
me.testo126 o anche solo testo126
pertanto
crit = "[IDPaziente]=" & Testo126
(crit = "[IDPaziente]='" & Testo126 & "'" se testuale)
docmd.openform "form2",,crit
Antonio

...risolto :)
grazie!
Al.