Ifo su relazione uno-molti tra due tabelle in vb.net

mercoledì 08 giugno 2011 - 09.29
Tag Elenco Tags  VB.NET

vito90 Profilo | Newbie

Ciao ragazzi ,

sto sviluppando un piccolo gestionale per aumentare le mie competenze in materia , ma ho un dubbio su una relazione uno a molti.

In pratica ho due tabelle : Pagamenti e clienti .

Ovviamente la tabella Pagamenti e la tabella padre e la tabella clienti e quella figlia (un pagamento puo essere utilizzato in piu clienti ...)

Nel dataset ho impostato il vincolo in modo che quando vado a cancellare il pagamento se utilizzato nella tabelle clienti nn me lo fa cencellare .

La mia domanda è questa : Nel form pagamenti devo caricare entrambi i tableadapter e i relativi bindingsource o c'è qualche metodo alternativo per far rispettare il vincolo della relazione ??

dimenticavo ... utilizzo come base dati SQL SERVER COMPAT 3.5 e visual studio prof 2010

grazie mille

bobo89 Profilo | Junior Member

Non sono riuscito a capire bene il problema che hai.... se provi a spiegarti meglio vedo di darti una mano
Zito Piero
info@makerit.it
http://www.makerit.it

jackk87 Profilo | Junior Member

Ciao devi fare un join nel campo from della query es:
SELECT * FROM pagamento INNER JOIN cliente ON pagamento.[id] = cliente.[idpagamento];

vito90 Profilo | Newbie

Cerco di essere un po più chiaro .

Se nel form "Metodi di pagamento" ho il pagamento con codice "RD" e il codice "RD" è utilizzato da più clienti , al momento dell'eliminazione di questo metodo di pagamento il programma dovrebbe darmi un messaggio del tipo : "impossibile cancellare record perche presente in anagrafica clienti "

Ora , nel dataset ho impostato gia questo vincolo relazionale (regole di aggiornamento e eliminazione)

Per far questo ho notato che caricando entrambi bindingsource e tableadapter all'avvio del form questo messaggio esce (come errore intercettato tramite try /catch ), ma cosi facendo carico in memoria troppi dati , e questo puo nel tempo degradare le prestazioni del programma .

non so se ora mi sono spiegato

bobo89 Profilo | Junior Member

Vorresti rimuovere un metodo di pagamento dopo che è gia stato utilizzato??? Ancora non riesco a capire qual è il punto....
con RD cosa intendi???
Zito Piero
info@makerit.it
http://www.makerit.it

vito90 Profilo | Newbie

RD e il codice pagamento (rimessa diretta), ovvero la chiave primaria della tabella pagamenti .

Se provo a cancellare un pagamento gia utilizzato viene fuori un eccezione .

Io voglio intercettare quell'eccezione e far uscire una bella msgbox che mi informa della presenza del pagamento nei clienti.


Questo è tutto ... non so se conviene caricare all'avvio del form due datatable per far questo (in termini di memoria e prestazioni) ... questo è il mio dubbio

babbubba Profilo | Senior Member

Se ho capito bene a te basta intercettare l'evento "DataError" del binding source o della griglia o del controllo bindato con il quale tenti di eliminare il record.

Babbubba

www.bsoftsolutions.it

Chiedere è curiosità ... rispondere è educazione.

bobo89 Profilo | Junior Member

ADESSO HO CAPITO....allora giustamente invece di caricarti tutti idati all inizio che è un macello, al momento dell eliminazione fai una if sulla tabella dei pagamenti che ti informa se efettivamente quel tipo di pagamento è stato utilizzato già!!....
Perche imposti RD come chiave primaria e non un semplice ID???
Zito Piero
info@makerit.it
http://www.makerit.it

vito90 Profilo | Newbie

Non voglio inguaiarmi con gli indici ... li utilizzo solo quando servono.

In sostanza ho capito che è meglio non caricare all'avvio due tabelle , ma carico quella che mi serve , e per capire se un codice di essa e movimentato in un altra tabella , faccio una query di count sull'altra tabella e il gioco e fatto .

è meno dispendioso ...

Grazie per il tempo che mi avete concesso

bobo89 Profilo | Junior Member

Esatto!! Spero di esserti stato d'aiuto!! Se è cosi accetta la risposta dall' apposito pulsante!!
Ciaooo
Zito Piero
info@makerit.it
http://www.makerit.it
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5