Newsgroup: it.comp.appl.access
Titolo: Visualizzazione dati con sottomaschere...

Un cordiale saluto a tutti! Questa volta non è un messaggio 'scherzo'..
Il mio problema è questo:
- ho 4 tabelle;
- la prima si chiama AnagraficaPAZIENTI, la cui chiave primaria è
Id-anagrafica;
- la seconda tabella si chiama TabDatiAMBULATORIALI con chiave primaria
Id-DatiClinici e chiave esterna Id-anagrafica;
- la terza tabella si chiama TabESAMI con chiave primaria Id-esami e chiave
esterna Id-DatiClinici;
- La quarta si chiama TabCERTIFICATI con chiave primaria Id-certificato e
chiave esterna Id-DatiClinici.
- La tabella AnagraficaPAZIENTI è collegata con una relazione da uno-a-molti
con la tabella TabDatiAMBULATORIALI tramite la chiave Id-anagrafica;
- la tabella TabDatiAMBULATORIALI è collegata, a sua volta, alle tabelle
TabESAMI e TabCERTIFICATI con una relazione da uno-a-molti tramite la chiave
Id-DatiClinici.
Il programma è già completo però devo modificare qualcosa nella scheda di
Aggiornamento dei records.
Nella maschera di Aggiornamento, tramite un menù a tendina, è possibile
selezionare il paziente desiderato ed automaticamente compaiono tutti i dati
relativi alle visite ambulatoriali effettuate.
In pratica, selezionando nella sottostante sottomaschera la relativa visita
ambulatoriale è possibile vedere nella altre due sottomaschere (esami
eseguiti e certificato) i records relativi a quella particolare visita
effettuata.
Pensavo bastasse !!! E invece no!
Il medico mi ha chiesto di vedere, una volta selezionato il paziente, tutti
i dati relativi ad una particolare visita ambulatoriale in una nuova
maschera simile a quella di immissione in modo da poter aggiornare i campi
senza possibilità di errore 'visivo'.
L'utente non desidera aggiornare i dati nelle sottomaschere perchè si creano
delle confusioni, ma vuole che, selezionati il paziente e le visita nella
sottoscheda, tramite un pulsante di comando, ad esempio, si possa aprire una
intera maschera contenente i dati solo relativi a quella visita specifica,
cioè con i dati degli esami eseguiti ed i certificati rilasciati (si tratta
di far apparire la maschera identica a quella di immissione solo che deve
contenere già tutti i dati immessi in precedenza).
Spero di non avere 'annoiato', io ho fatto qualche tentativo, ma credo di
essere fuori strada e la cosa mi preoccupa visto che devo far presto e visto
anche che il medico è convinto che sia una 'cretinata', per me non lo è....
   Grazie per tutti gli aiuti che per me saranno preziosi.
      Ciao Rita.

 ha scritto nel messaggio
news:KDj0d.87401$1V3.2...@twister2.libero.it...

Ciao Rita.
Creai una query dove metti in Inner Join, in base ai campi Id_anagrafica la
tabella TabDatiAMBULATORIALI e la tabella AnagraficaPAZIENTI.
Usa tale query come origine record di una maschera principile; nella
maschera principale inserisci anche due sottomaschere di cui la prima avrà
come origine record la tabella TabESAMI e la seconda la tabella
TabCERTIFICATI; naturalmente il Coolega campi mastere e il Collega campi
secondari dei due controlli sottomaschera saranno i campi Id-DatiClinici.
A questo punto nell'intestazione della maschera principale metti due caselle
di testo non associate con le quali sceglierai il nome del paziente e la
visita ambulatoriale che ti serviranno a filtrare la maschera principale;
così facendo il tuo amico medico visualizzerà i dati relativi ad una sola
visita di un determinato paziente, e ne farà l'uso che riterrà più
opportuno.
Per semplificare l'uso della seconda casella combinata, sincronizzala alla
prima, così nel suo elenco vedrai solo le visite ambulatoriale fatte al
paziente selezionato con la prima casella combinata.
Spero di aver ben compreso il tuo problema e quindi di essere stato chiaro
nel fornirti una soluzione.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:lkl0d.4712$6b4.1...@twister1.libero.it...

Grazie mille Roberto, ho letto proprio ora il tuo messaggio e sei stato
chiarissimo, ora mi metto al lavoro sperando di non crearmi 'da sola' altri
problemi.
   Ciao Rita


Ciao Roberto,
ho cercato di applicare ciò che mi hai suggerito, ma alla fine sono riuscita
a sincronizzare soltanto la due caselle non associate nel senso che
funzionano bene però le sottomaschere non mi selezionano i record relativi
ad una determinata visita.
Ho creato la maschera con la query come sorgente dei dati, ho inserito le
due caselle di testo e funzionano, cioè seleziono il paziente e vedo le
visite relative.
E' chiaro che le visite riporteranno la data che sarà il punto di
riferimento per la selezione.
Ti aggiungo solo che selezionata la visita devo poter modificare, aggiungere
o cancellare i records relativi anche alla sottomaschera delle visita
ambulatoriale selezionata, quindi dovrò visualizzare anche tutti i campi
della sottomaschera visite ambulatoriali.
Ho aggiunto poi nella maschera le sottomaschere relative agli esami ed ai
certificati, ma sono prive di vita! Collegate con Id-dati-clinici (campi
master e secondari), non funzionano.
Le sottomaschere rimangono ferme sul il primo record
Scusami se ti impegno ancora in un faticoso salvataggio.........
    Grazie e buona notte...per ora, ti leggerò domani.
           Ciao Rita


Probabilmente non mi sono spiegato bene, perchè quello che ti ho suggerito
deve funzionare.
Se la tabella AnagraficaPAZIENTI ha una struttura simile a questa:
Id-anagrafica        Contatore e chiave primaria
NomePaziente      Testo
CognomePaziente Testo
ecc. ecc.
Se la tabella TabDatiAMBULATORIALI ha una struttura simile a questa:
Id-DatiClinici        Contatore e chiave primaria
Id-anagrafica        Numerico e chiave esterna
DataVisita             Data/ora
ecc. ecc.
Se la tabella TabESAMI ha una struttura simile a questa:
Id-esami                Contatore e chiave primaria
Id-DatiClinici         Numerico e chiave esterna
Esame                    Testo
DataEsame            Data/ora
EsitoEsame            Testo
ecc. ecc
Se la tabella TabCERTIFICATI ha una struttura simile a questa:
Id-Certificato          Contatore e chiave primaria
Id-DatiClinici           Numerico e chiave esterna
DataCertificato        Data/ora
Testo                       Testo
Le tabelle saranno fra di loro in relazione come tu hai spiegato nel tuo
primo messaggio; aggiungi alle relazioni l'integrità referenziale ed abilita
l'opzione Elimina record correlati a catena.
Creati una query di selezione chiamata Query1 che abbia il seguente codice
SQL:
SELECT TabDatiAMBULATORIALI.[Id-DatiClinici],
TabDatiAMBULATORIALI.[Id-anagrafica], TabDatiAMBULATORIALI.DataVisita,
[NomePaziente] & " " & [CognomePaziente] AS NomeCognome
FROM AnagraficaPAZIENTI INNER JOIN TabDatiAMBULATORIALI ON
AnagraficaPAZIENTI.[Id-anagrafica] = TabDatiAMBULATORIALI.[Id-anagrafica]
WHERE
(((TabDatiAMBULATORIALI.[Id-anagrafica])=[Forms]![MascheraPrincipale]![Cerca
Paziente]) AND
((TabDatiAMBULATORIALI.DataVisita)=[Forms]![MascheraPrincipale]![CercaVisita
]));
Creati una maschera con visualizzazione a maschera singola chiamata
MascheraPrincipale che abbia come origine record Query1.
Nell'intestazione di MascheraPrincipale inserisci una casella combinata non
associata chiamata CercaPaziente che abbia 2 colonne di cui visibile solo la
seconda e che abbia come origine riga il seguente codice SQL:
SELECT DISTINCTROW AnagraficaPAZIENTI.[Id-anagrafica], [CognomePaziente] & "
" & [NomePaziente] AS CognomeNome FROM AnagraficaPAZIENTI ORDER BY
[NomePaziente] & " " & [CognomePaziente];
Nell'intestazione di MascheraPrincipale inserisci anche una casella
combinata non associata chiamata CercaVisita che abbia 2 colonne di cui
visibile solo la prima e che abbia come origine riga il seguente codice SQL:
SELECT DISTINCTROW TabDatiAMBULATORIALI.DataVisita,
TabDatiAMBULATORIALI.[Id-anagrafica] FROM TabDatiAMBULATORIALI WHERE
(((TabDatiAMBULATORIALI.[Id-anagrafica])=[Forms]![MascheraPrincipale]![Cerca
Paziente])) ORDER BY TabDatiAMBULATORIALI.DataVisita;
A fronte dell'evento "Dopo aggiornamento" di CercaPaziente genera la
seguente riga di codice VBA:
Private Sub CercaPaziente_AfterUpdate()
Me!CercaVisita.Requery
End Sub
Mentre a fronte dell'evento "Dopo aggiornamento" di CercaVisita genera la
seguente riga di codice VBA:
Private Sub CercaVisita_AfterUpdate()
Me.Requery
End Sub
Nel corpo di MascheraPrincipale inserisci una sottomaschera a maschera
continua che abbia come origine record tabESAMI; le proprietà Collega campi
master e Collega campi secondari del controllo sottomaschera debbomo essere
impostati con Id-DatiClinici.
Nel corpo di MascheraPrincipale inserisci anche una sottomaschera a maschera
continua che abbia come origine record tabCERTIFICATI; le proprietà Collega
campi master e Collega campi secondari del controllo sottomaschera debbomo
essere impostati con Id-DatiClinici.
Ciò fatto da MascheraPrincipale e dalle sottomaschere potrai effettuare
qualsiasi inserimento, modifica o cancellazione nelle tabelle
TabDatiAMBULATORIALI, TabESAMI e TabCERTIFICATI.
Sero questa volta di essere stato sufficientemente chiaro.


 ha scritto nel messaggio
news:JCA0d.88508$1V3.2...@twister2.libero.it...

Ciao Roberto, mi dispiace averti impegnato in questo lungo messaggio, tu sei
stato chiarissimo, sono io che ho ancora delle lacune in Access...
Praticamente mi hai scritto il programma! Grazie.
Sono tornata ora ed ho letto velocemente, stasera con calma rivedrò il tutto
per capire dove mi sono impatanata.
(Mi porto il tuo messaggio stampato dalla parrucchiera...)
                       Ciao e grazie
                          Rita