Newsgroup: it.comp.appl.access
Titolo: AIUTO Relazioni !!!

Salve a tutti ho un problema con delle relazioni
che non riesco a risolvere.
Spero che qualcuno di voi possa aiutarmi.
Ecco la situazione
Tabella Fatture:
id_fattura contatore Pk
ditta testo
N_Protocollo Numero
Tabella Bolle:
id_bolla contatore Pk
Emittente testo
N_Protocollo Numero
Tabella Protocollo:
N_Protocollo Numero (non nullo,univoco)
data_reg  Data
Registrante testo
fatture e bolle sono collegate a protocollo
ognuna con una relazione 1 a 1.
Purtroppo in questo modo non riesco ad evitare
che due record uno in fatture e uno in bolle
rechino lo stesso N_Protocollo.
Io invece vorrei che ogni record in bolle o fatture
riportasse un N_protocollo univoco.
Non dovrebbe mai accadere una situazione tipo questa:
FATTURE
|id_fattura|Data  |N_protocollo|
|----------|--------|------------|
|001         |011201|1200        |
BOLLE
|id_bolla  |Emitte   |N_protocollo|
|----------|---------|------------|
|235         |ditta1     |1200
Un grazie in anticipo a chiunque voglia aiutarmi

 ha scritto nel messaggio
news:9h6tch$9pd$1...@diesel.cu.mi.it...

Immagino che la chiave primaria della Tabella Protocollo sia il campo
N_Protocollo.
Così come hai descritto la struttura delle 3 tabelle oserei dire che le
tabelle Fatture e Bolle sono in relazione uno-a-molti e no uno-a-uno con la
tabella protocollo; che normalmente in una relazione uno-a-uno i campi che
mettono in relazione le due tabelle dovrebbero essere ambedue chiavi
primarie; comunque debbono avere la proprietà di campo Indicizzato impostata
a Si (Duplicati non ammessi); se così non fosse potresti avere due fatture
con lo stesso numero di protocollo oppure due bolle con lo stesso numero di
protocollo.
Quindi risolvi prima questi problemi.
Comunque, per rispondere al tuo quesito.
Se il campo N_Protocollo della tabella Fatture non ha valore predefinito e
la proprietà Richiesto impostata a Si.
Se i controlli della maschera con cui aggiorni la tabella Fatture hanno lo
stesso nome dei campi cui sono associati, a fronte dell'evento "Prima di
aggiornare" della maschera genera il seguente codice VBA:
If Not IsNull(Me!N_Protocollo) Then
If Not IsNull(DLookup("[N_Protocollo]", "Bolle", "N_Protocollo=" &
Me!N_Protocollo)) Then
MsgBox "Numero di Protocollo " & N_Protocollo & " già usato"
Cancel = True
Me!N_Protocollo.SetFocus
Me!N_Protocollo.Undo
End If
Else
MsgBox "Digita il numero di protocollo"
Cancel = True
Me!N_Protocollo.SetFocus
End If
Se il campo N_Protocollo della tabella Fatture non ha valore predefinito e
la proprietà Richiesto impostata a Si.
Se i controlli della maschera con cui aggiorni la tabella Fatture hanno lo
stesso nome dei campi cui sono associati, a fronte dell'evento "Prima di
aggiornare" della maschera genera il seguente codice VBA:
If Not IsNull(Me!N_Protocollo) Then
If Not IsNull(DLookup("[N_Protocollo]", "Fatture", "N_Protocollo=" &
Me!N_Protocollo)) Then
MsgBox "Numero di Protocollo " & N_Protocollo & " già usato"
Cancel = True
Me!N_Protocollo.SetFocus
Me!N_Protocollo.Undo
End If
Else
MsgBox "Digita il numero di protocollo"
Cancel = True
Me!N_Protocollo.SetFocus
End If
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Usando le relazioni secondo me non lo puoi fare.
Io piuttosto userei una tabella sola BOLLE/FATTURE ed aggiungerei un campo
flag per distinguere i record.
Dall'help di access :
"Relazione uno-a-uno
In una relazione uno-a-uno ogni record della tabella A può avere solo un
record corrispondente nella tabella B e viceversa. Questo tipo di relazione
non è comune, in quanto la maggior parte delle informazioni correlate in
questo modo vengono incluse in una tabella. È possibile utilizzare una
relazione uno-a-uno per dividere una tabella con molti campi, per isolare
parte di una tabella per ragioni di protezione o per memorizzare le
informazioni valide solo per un subset della tabella principale. È
possibile, ad esempio, che si desideri creare una tabella per tenere traccia
degli impiegati che prendono parte ad una partita di calcio di beneficenza."
Spero ti possa essere d'aiuto
Ciao

 ha scritto nel messaggio
news:9h6tch$9pd$1...@diesel.cu.mi.it...

Ma non ti conviene gestire le tipologie dei "documenti" in una tabella unica
con un campo che indica se è "Fattura" o "Bolla", poi con l'indice univoco
sul campo protocollo non inserirai mai lo stesso valore...
Ciao.

Un Grazie a tutti per il vostro aiuto.
Con i Vs consigli ho risolto il problema
Saluti
Domenico