Newsgroup: it.comp.lang.visual-basic
Titolo: aggiornare record correlati

Visual Studio.net mi visualizza questo messaggio:
Impossibile aggiungere o modificare il record. Nella tabella "Utente" è 
necessario un record correlato.
cioè ho fatto un UPDATE su tale tabella, che è correlata ad un altra tabella 
del DB tramite un campo che è Username.
se giustamente modifico questo campo va modificato anche nell'altra tabella 
,vero?
io ho fatto 2 Update in fila, la sintassi è corretta ma il problema non si è 
risolto, sempre lo stesso messaggio.
Quali sono i passaggi da seguire????
ci sono esempi a riguardo pero specifici? ( non quelli di MSDN) 

 ,vero?
così, a orecchio, la cosa è irrisolvibile :-)
se modifichi prima il dato nella colonna padre, restano righe orfane nella
tabella figlio, se modifichi prima il figlio, generi immediatamente un
orfano.
una cosa del genere, a mio avviso, significa che la base dati è stata mal
progettata: non dovrebbe mai essere necessario modificare tali dati.
comunque dovrebbe essere possibile, impostando il vincolo relazionale con
la clausola "modifica campi correlati in cascata" (o simile), in questo
modo, modificando il dato nella tabella padre vengono automaticamente
aggiornate le righe nella tabella figlio.
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Quindi applicare il vincolo di integrità referenziale?
oppure i 2 update devono essere fatti contemporanemante?
il vincolo poi non si applica anche quando si cancella una riga e vengono 
cancellate anche quelle correlate? se è cosi a me non è utile purtroppo 

 Quindi applicare il vincolo di integrità referenziale?
il vincolo, con tutta evidenza, c'è già. ti dicevo, semmai, di modificarlo.
ma in realtà, ti dicevo di rivedere la logica del programma: è molto,
molto strano che si debbano fare modifiche ad un campo che serve come
collegamento ad altri record. nella migliore delle ipotesi stai usando il
campo sbagliato.


 grazie per le risposte Melchiade.
comunque il campo non è quello "sbagliato" ne sono sicuro.
Per la semplice modifica va bene tale discordo ma se devo cancellare un 
record in una tabella a cui è associato un campo in un'altra tabella , nelle 
mie specifiche di progetto questa cosa non è ammessa e dovrei mettere nel 
campo della tabella correlata che in teoria si dovrebbe cancellare a 
cascata,  un altro valore sempre preso dalla tabella da cui cancello il 
record, non so se ho detto in modo comprensibile.
nel primo caso va bene un solo Update, nel secondo non so bene...

 comunque il campo non è quello "sbagliato" ne sono sicuro.
uhmm... vediamo se riesco a spiegarmi io, che quello che scrivi tu non
riesco proprio a capirlo.
l'integrità referenziale serve per situazioni di questo tipo: ho una
tabella che elenca le fatture (chiamiamola FATTURE), e un'altra tabella
che raccoglie le singole righe delle fatture (chiamiamola DETTAGLIO).
per sapere a che fattura appartiene ciascuna riga di DETTAGLIO, si
individua un campo all'interno della tabella FATTURE che faccia da
identificativo, e si riporta questo valore in un campo della riga di
dettaglio. si impone poi che non possa esistere nessuna riga di dettaglio
che abbia associato a quel campo un valore che non esiste nella tabella
fatture. tradotto in parole povere, ciascun dettaglio deve appartenere ad
una fattura.
è buona norma che il campo della tabella FATTURE che serve come
collegamento al dettaglio non sia mai mostrato all'esterno del database,
in modo che non ci sia mai motivo di doverlo modificare.
i tuoi campi sono tutti modificabili? bene, aggiungine uno, che
considererai sacro immutabile, intoccabile, inciso sulla pietra e
totalmente inaccessibile che avrà la sola funzione di servire come
identificativo.
tutto il resto è noia.



Ho risolto il problema dell'aggiornamento con il semplice settaggio del 
vincolo d'integrita referenziale.
Non posso applicarlo alla cancellazione del record, come dovrei fare???
cioè devo assegnare il campo che andrebbe cancellato al valore di un altro 
record, cioè in modo semplice  se nell'username c'era pippo, quella riga non 
la si deve cancellare e ci devo scrivere dove c'era pippo un valore preso o 
dalla stessa o da un'altra tabella (o dello stesso campo o correlato)
se faccio cosi non me lo fa fare,
la cosa capisco che non è facile da far capire bene