Newsgroup: it.comp.appl.access
Titolo: Aggiornare campi non relazionati con integrità referenziale per aggiornamento ed eliminazione a catena.

Access 2003 / 2010
 
Buongiorno al a tutto il News.
 
Problema:
 
Ho una form principale con diverse sottomaschere; in una di queste 
"sottoform piloti" vengono inserite i piloti, che se in addestramento viene 
spuntato con una casella di controllo per evidenziarlo/selezionarlo. Su 
doppio clic del campo del pilota posso aprire la form Popup in dialogo "Form 
Addestramento"ove viene inserito il tipo di addestramento effettuato con 
l'elicottero. Il tutto � relazionato con iltegrit� referenziale per 
aggiornamento ed eliminazione a catena mediante l' "ID_Equipaggio" della 
tabella relativa alla "sottotomaschera equipaggio" che � un numero univoco 
perch� contatore. Nell'inserimento dell'addestramento, nell'aggiornamento 
del record faccio inserire come valore il codice univoco di riconoscimento 
del pilota e della categoria a cui appartiene l'aeromobile (numerico, 1= un 
tipo di elicottero, 2=altro tipo di elc, ecc.). Il problema che non riesco a 
risolvere � come poter aggiornare questi valori non relazionati quando la 
"Form Addestramento" � chiusa e quindi non posso riaggiornarla anche 
semplicemente riscrivendo su un campo per fargli imputare i valori 
"ID_Equipaggio" e "categoria aeromobile", questo nel solo caso che l'utente 
(mio collega), dopo aver inserito l'addestramento e chiuso la form popup, 
vada poi a cariare il pilota o il tipo di elicottero perch� si � reso conto 
di averli inseriti sbagliati.
Tutte le sottomaschere sono relazionate con un codice univoco diverso per 
necessit�.
In conclusione....non posso fare l'integrit� referenziale relazionando anche 
l' ID_equipaggio perch� mi risponde "nessun indice univoco trovato per il 
campo della tabella primaria a cui si fa riferimento", ma non risolverei il 
problema perch� il valore della categoria dell'aeromobile lo prendo da un 
campo della form principale (dove � inserita la "sottoform piloti").
 
Il codice del pilota e la cat elic sono importanti perch� necessitano per 
relazionare poi altre query con le ore volo totali, ecc.
 
Spero di non chearvi confusione. Se non esiste un modo per aggiornare i 
campi non relazionati con integrit� referenziale, forse si potrebbe pensare 
a qualche avviso per eliminare prima il record dell'addestramento inserito, 
effettuare la variazione dell'equipaggio e tipo elicottero e poi 
reinserirlo, si ma come!!!!!
 
Mille grazie, Bruno 
 
 

 
[CUT]
 
Nell'attesa di un aiuto sto continuando a documentarmi per risolvere il 
problema.
In particolare sto vedendo qualcosa sui "trigger di Access".
Se avete dimestichezza nello scrivere SQL vi prego di darmi una mano.
 
Grazie, Bruno
 
 


Access non ha i trigger, nel senso di SQL server. Nel 2010 ci sono le macro a livello di tabella, che ne fanno le veci, ma tra una macro e una stored procedure SQL ce ne passa di strada....Cmq, non ho ben capito la problematica, ma in generale puoi gestire le cancellazioni anche da codice. Quando il tuo collega deve riscrivere qcosa xchè ha sbagliato, basta fare un "SELECT TuoCampoValore FROM Tabella WHERE ValoreNonRelazionato=valore che sto cercando di cancellare". Se il valore lo trovi, allora chiedi se devi cancellare tutto, e gestisci le varie DELETE, magari in una transazione per essere sicuro di fare tutto il lavoro. Nel caso succeda qualcosa, rispondi 'non puoi cancellare/riscrivere'

 Grazie, Bruno
 
Access non ha i trigger, nel senso di SQL server. Nel 2010 ci sono le macro 
a livello di tabella, che ne fanno le veci, ma tra una macro e una stored 
procedure SQL ce ne passa di strada....Cmq, non ho ben capito la 
problematica, ma in generale puoi gestire le cancellazioni anche da codice. 
Quando il tuo collega deve riscrivere qcosa xchč ha sbagliato, basta fare un 
"SELECT TuoCampoValore FROM Tabella WHERE ValoreNonRelazionato=valore che 
sto cercando di cancellare". Se il valore lo trovi, allora chiedi se devi 
cancellare tutto, e gestisci le varie DELETE, magari in una transazione per 
essere sicuro di fare tutto il lavoro. Nel caso succeda qualcosa, rispondi 
'non puoi cancellare/riscrivere'
 
^^^^^^^^^^^
 
Mille grazie, sei stato chiarissimo.
 
Bruno