PDA

View Full Version : [.NET 2005/MySql]Problemi con le relazioni


RaouL_BennetH
07-07-2008, 13:40
Ciao a tutti :)

Ho due semplici tabelle:



tabCantieri

id_cantiere PK
descrizione varchar


tabCantieriSedi
id_cantiere
descrizioneAggiuntiva
id_sede unique



C'è una relazione uno a molti, nel senso che un cantiere può avere molte sedi.

Una tipica select sulla tabella tabCantieriSedi mi darà, dopo aver inserito i dati:



id_cantiere descrizioneAggiuntiva id_sede
1 centro sud 855
1 messico 986



Ora, il problema nasce quando uso visual studio, e sia in C# che in VB.Net

Ho delle combobox sul form, le prime due hanno come sorgente dati la tabella tabCantieri e, correttamente, visualizzo il codice del cantiere e la descrizione nelle rispettive combobox.

Ho altre due combobox che dovrei filtrare in base a ciò che scelgo dalle altre combobox, per esempio, scelgo il cantiere "1", e le altre due combobox relative alla tabella tabCantieriSedi mi si dovrebbero popolare con l'id_sede e la descrizione aggiuntiva.

Credevo bastasse fare semplicemente così:



SELECT id_sede, descrizioneAggiuntiva FROM tabCantieriSedi WHERE id_cantiere = @id_cantiere

'fatto questo, mi andavo poi a popolare normalmente le altre due combo con un semplice dataset in questa maniera:

[VB]
Dim cantieriSedi as New myCustomTableAdapter.cantieriSediTableAdapter
Dim ds As New DataSet()
ds.Tables.Add(cantieriSedi.GetDataBy(comboCodiceCantiere.Text))
comboIdSede.DataSource = ds.Tables(0)
comboIdSede.DisplayMember = "id_sede"
comboIdSede.ValueMember = "descrizioneAggiuntiva"

'ho tralasciato i vari try/catch


C#

cantieriSediTableAdapter cantieriSedi = new cantieriSediTableAdapter();
DataSet ds = new DataSet();
ds.Tables.Add(cantieriSedi.GetDataBy(comboCodiceCantiere.Text));
comboIdSede.DataSource = ds.Tables(0);
//ugualos...



Ma... ecco l'errore che ho a video:


Impossibile attivare i vincoli. Una o più righe contengono valori che violano il vincolo non-null, unique o foreign-key.


:muro: :help:

RaouL_BennetH
07-07-2008, 13:56
Ok.. Risolto cambiando la query facendo una join sull'id_cantiere fra le due tabelle... :)