Newsgroup: it.comp.appl.access
Titolo: Relazioni ... help ...2

Scusate ... ma non conoscevo le regole che impongono di non accodare
immagini..
...per cui vi ripropongo il dilemma senza le immagini ( che però sarebbero
state di aiuto )
Ecco il mio problema ...
spero di essere chiaro. Nel mio
db esistono tre tabelle:
tblricette con i dati di ricette farmaceutiche, nella tabella tblCUF ci sono
i dati relativi ai nomi dei farmaci che in tblricette sono solo dei codici
(cod_spec1 ....6), e in tblN_medici sono contenuti i dati relativi ai medici
prescrittori che sempre in tblricette sono codici (cod_med)  .
Ora vi chiedo... e scusate, ma riconosco la mia ignoranza più che grassa...
1) è opportuno definire chiavi primarie?
2) quali relazioni devo impostare tra le tabelle per avere poi in una query
i codici farmaci (cod_spec1...6) affiancati dai rispettivi nomi e dal nome
del medico prescrittore? In tutto sono 6 codici che corrispondono a sei nomi
di farmaci (spesso sono uguali). Ho provato.. ma sono riuscito a farlo  solo
con un farmaco.
3) Quali condizioni devo imporre alla query di selezione che mi deve far
vedere solo solo le ricette con N_pezzi >2  ( salvo quelle con Nota_CUF =
55bis)  e contemporaneamente  solo alcune note_cuf.
4) e scusate se abuso ... ma da solo non ce la faccio proprio..
vi allego un pezzo di listato che non mi funziona!!!!!
dovrebbe settare le relazioni da programma... dove sbaglio?
Nella terzultima riga si intoppa...
.Private Sub relazioni_Click()
' NuovaRelazione()
 Dim dbs As Database, rel As Relation, fld As Field
 ' Restituisce il riferimento al database corrente.
 Set dbs = CurrentDb
 ' Crea nuovo oggetto Relation e specifica la tabella correlata.
 Set rel = dbs.CreateRelation("pippo", "Tblricette", "tblcuf",
dbRelationUnique)
 ' Imposta gli attributi per applicare integrità referenziale.
rel.Attributes = dbRelationUpdateCascade And dbRelationDeleteCascade
 ' Crea il campo in oggetto Relation.
 Set fld = rel.CreateField("cod_spec1")
 ' Specifica il nome del campo nella tabella correlata.
 fld.ForeignName = "cod_farm"
 ' Accoda oggetto Field a insieme Fields di oggetto Relation.
 rel.Fields.Append fld
 ' Accoda oggetto Relation a insieme Relations.
dbs.Relations.Append rel
 dbs.Relations.Refresh
 Set dbs = Nothing
End Sub
L'ho preso quasi pari pari dall'Help
Un grazie immenso da parte mia...
bce...@tiscalinet.it
p.s. sono aperte le iscrizioni all'A.I.T.C.

p.s. sono aperte le iscrizioni all'A.I.T.C.
e cos'è l' A.I.T.C. ??


1) Direi di sì, ma ogni database ha un suo disegno specifico: nel tuo
caso definirei senz'altro le seguenti chiavi primarie:
   - tblCUF      ---> campo CodiceFarmaco
   - tblN_medici ---> campo CodiceMedico
Ciò implica che non possono esistere nel db due medici (oppure due
farmaci) con lo stesso Codice e non so se questo va bene per te. Per
quanto riguarda la tabella ricette il discorso è un po' più ampio: se
vuoi definire una ChiavePrimaria (e credo che sia bene che tu lo
faccia) devi stabilire quali sono i campi che identificano UNIVOCAMENTE
la singola ricetta (es.: CodiceMedicoPrescrittore + DataPrescrizione +
OraPrescrizione). Se non c'è tale criterio di univocità puoi aggiungere
un campo contatore oppure rivedere il disegno del db.
2) In Tools\Relationships (Strumenti\Relazioni??) puoi definire
facilmente le relazioni tra le tabelle del tuo DB con un semplice drag
and drop.
3) Anche la creazione di queries è abbastanza intuitiva ma necessita
comunque di un po' di sperimentazione se non si ha molta esperienza con
Access: ti consiglio di disegnare prima una semplice query senza
condizioni particolari (magari dando un'occhiata all'help in linea),
verificarne il risultato e quindi aggiungere una condizione, verificare
il risultato e così via...
4) Se lo scopo di tutto questo è creare delle relazioni tra tabelle,
non credo che ne valga la pena: fallo a mano come ti ho suggerito e
vedrai che ti diverti di più :-)
Ciao e buona fortuna!
Alessandro
Sent via Deja.com 
http://www.deja.com/
Before you buy.


1)  come ... l' A.I.T.C?
     Associazione Italiana per la Tutela del Cappuccino!  .... scusate ma la
capoccia è partita da tempo.
Comunque altre due domande soolevate dalle vostre risposte.
Come si imposta una chiave primaria da programma ?
Le relazioni (capisco che sia difficile ... ma il Vs aiuto dove lo mettete?)
devo impostarle da programma, perchè i dati vengono importati da file txt,
quindi accodati a tbl create da programma. Se non ho le tbl all'inizio del
ciclo Access si rifiuta di definire relazioni.
GRAZIE
bce...@tiscalinet.it

 
bce...@tiscalinet.it
Se la tua esigenza è importare dati da un file ASCII, il discorso è
forse ancora più delicato. Quando importi il file TXT:
a) che succede ai dati già presenti nella tabella di destinazione?
b) che succede ai dati già presenti nelle tabelle collegate?
c) se, per ipotesi, tutto viene cancellato, come controlli che i dati
nel file di origine siano congruenti (ad es.: nessuna chiave duplicata)?
Una soluzione possibile è:
1) definire nel disegno del database la tabella di destinazione con
tutte le sue chiavi e relazioni;
2) importare tutto il file TXT in una tabella temporanea (senza chiavi
nè relazioni);
3) definire delle query che aggiornano la/le tabella/e definitive dopo
aver fatto gli opportuni controlli sulla tabella temporanea.
Come ripeto molto dipende da come è strutturato il tuo db, ma l'idea di
dover definire relazioni e chiavi primarie in fase di run-time mi fa
venire un cerchio alla testa...
Spero di esser stato utile.
Ciao.
