Newsgroup: it.comp.appl.access
Titolo: collegamenti

Chi mi aiuta, (recisando di non essere alla vostra altezza, ma solamente un
invalido che passa il tempo al computer) a collegare correttamente tre
tabelle per  la costruzione di una specifica cartella clinica. Le tabelle
sono: Anagrafica (cognome,nome ecc.), anmanesi (data, malattie, ricoveri
ecc) e visite (data,esami_eseguiti, risultati ecc.) Il risultato dovrebbe
essere che inserendo un nome in Anagrafe dovrei avere tutta la storia
clinica visualizzata. Non sono capace di creare correttamente gli ID di
collegamento alle tabelle. Scusate ancora la mia ignoranza, ma spero tanto
che qualcuno mi dia una mano.
Grazie Roberto

 ha scritto nel messaggio
news:9l42b.134252$cl3.4...@news2.tin.it...

Volentieri.
La tabella Anagrafica è la principale. Certamenete avrai provveduto a creare
una chiave primaria.
Supponiamo che la chiave primaria si chiami IDPersona di tipo numerico con
indice che non ammette duplicati.
Questa può anche essere di tipo numerico contatore.
Nelle altre tabelle oltre ai campi propri dovrai inserire un campo "Persona"
di tipo numerico.
Apri le relazioni e crea una relazione uno a molti tra l'IDPersona della
tabella Anagrafica e Persona della tabella Anamnesi.
Lo stesso farai con la tabella Visite.
La guida in linea ti darà ulteriori informazioni sulle relazioni e
l'integrità referenziale.
Ciao, Carlo

Roberto
OK.
Per rispondere al NG selezioni il messaggio a cui vuoi rispondere e
cliccando il tasto destro del mouse scegli "Rispondi al NG",
oppure selezioni il messaggio a cui vuoi dare una risposta e dal menù
"Messaggi" scegli "Rispondi al NG".
Ancora, seleziona il messaggio e premi CTRL+G sulla tastiera.
Ricorda comunque che la guida in linea è sempre ricca di spiegazioni.
Per il secondo problema tutto dipende da cosa vuoi fare e quali risultati
intendi ottenere.
Questo codice che scrivo sotto permette di aprire una maschera "Anamnesi" a
partire dalla maschera "Anagrafica" e
trovare lo stesso codicePersona. Va scritto sull'evento clic di un oulsante:
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "Anamnesi"
    stLinkCriteria = "[Persona]=" & Me![IDPersona]
    DoCmd.OpenForm stDocName, , , stLinkCriteria
Detto questo forse quello che a te serve è creare una maschera Anagrafica e
due sottomaschere che si alimentano dalle altre due tabelle.
In questo modo hai tutto sott'occhio e puoi aggiungere o modificare quello
che vuoi.
Per questo, che sarebbe troppo lungo da spiegare, cerca nella guida alla
voce sottomaschere.
Un'altra possibilità è quella di usare una "Struttura a Schede" (vedi nella
guida) con tre pagine. In ciascuna delle pagine metterai le maschere che
avrai gia realizzato per ciascuna tabella.
Spero di esserti stato d'aiuto,
Ciao, Carlo

 ha scritto nel
messaggio news:lTn2b.37184$zN5.1...@news1.tin.it...

Grazie ancora Carlo,
le tue indicazioni sono state preziose, anche perchè, con tutta la mia
ignoranza in informatica, piano piano riesco a capire qualcosa.
Effettivamente funziona correttamente con le sottomaschere. Per un'utilità
migliore, mi servirebbe collegare, come già detto, aprendo una seconda
maschera  da "Anagrafe" in "Anamnesi" con un Pulsante di comando, l'ho fatto
e messo le indicazioni che mi hai dato. All'attivazione del pulsante mi si
apre la finestra di debug che poi mi segnala in giallo la riga:
DoCmd.OpenForm stDocName, , , stLinkCriteria
quella prima dei End Sub:
_____________
Private Sub Anamnesi_Click()
 Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "Anamnesi"
    stLinkCriteria = "[Cognome]=" & Me![IdAnagrafe]
    DoCmd.OpenForm stDocName, , , stLinkCriteria
End Sub
_____________
Ho tentato di correggere con le indicazioni che mi venivano date, ma niente
da fare, la maschera mi si apre sempre ak primo record, anche se in Anagrafe
avevo scelto un altro.
Tutto il resto mi sembra perfetto. Se vuoi ed hai ancora pazienza, mi dai un
indicazione, spero l'ultima.
Scusami
Roberto


cut

Affinchè la maschera si possa aprire al record voluto è necessario puntare a
un valore univoco e dello stesso tipo (numerico, testo).
E' come se tu dicessi: apri la maschera Anamnesi e posizionati al record che
ha lo stesso IDAnagrafe (unico) della maschera Anagrafe.
Questo comporta che nella maschera Anamnesi vi sia un controllo (non importa
il nome) che abbia l'IDAnagrafe della maschera Anagrafe.
Quando scrivi: stLinkCriteria = "[Cognome]=" & Me![IdAnagrafe] è come se
dicessi trovami il record (unico) che abbia il Cognome = a IDAnagrafe.
Credo che l'errore stia proprio qui. Probabilmente dovresti scrivere:
stLinkCriteria = "[ID]=" & Me![IdAnagrafe].
In poche parole la stringa di link deve contenere le chiavi univoche delle
due maschere o recordset.
La persona X che ha l'ID univoco nella maschera Anagrafica, ha un ID univoco
nella maschera Anamnesi. Sono questi due ID che devono essere legati nella
stringa di link.
Questo è vero per il recordset Anamnesi visto che sarà solo una l'anamnesi
della persona. Non sarà così per il recordset Visita.
In questo caso è preferibile usare una sottomaschera con tutti i record
(visite) della persona o filtrare una maschera Visite con i soli record
corrispondenti alla persona.
Ciao, Carlo

 ha scritto nel
messaggio news:AxV2b.43880$zN5.1...@news1.tin.it...

Ciao Carlo,
ho provato anche la soluzione da te indicata, però non funziona, mi da'
sempre errore.
Se non ci sono possibilità in merito, penso mi convenga fare il tutto con le
sottomaschere.
Ti ringrazio
Roberto