Problemi Vincoli e Relazioni eseguendo una query...

giovedì 03 febbraio 2011 - 14.37
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows 7  |  Visual Studio 2008  |  MySQL 5.1

babbubba Profilo | Senior Member

Ciao a tutti,
premetto che prima di scrivere ho cercato soluzioni per giorni senza alcun risultato.

Vi spiego cosa voglio fare...
Ho una query che fa un join di tre tabelle... voglio ottenere una datatable da questa query ed usarla come datasource in una combo.

a grandi linee faccio così:

....
Dim out as new Datatable Command = New MySql.Data.MySqlClient.MySqlCommand(QueryString, cnt) r = Command.ExecuteReader out.Load(r)
...

La stessa query eseguita su un editor mysql funziona e mi da due righe di risultato... se la eseguo in vs mi genera un'eccezione in "out.load(r)"... e dice: "Impossibile attivare i vincoli. Una o più righe contengono valori che violano il vincolo not null....".

In effetti nelle tabelle ci sono dei campi che devono essere 'unique' ed infatti i valori all'interno delle singole tabelle non possono essere duplicati ma non capisco perchè anche una query dove sicuramente quei campi saranno ripetuti e non univoci richieda i vincoli di tabella per essere assegnata ad una datatable.

Qualcuno di voi conosce un sistema per risolvere la cosa? Oppure... sono io che sbaglio (probabile) qual'è il modo corretto per fare questa query?

P.S. Se su tutte e tre le tabelle tolgo i vincoli not null e unique da tutti i campi la query funziona anche in vs, inoltre finchè non metto valori che nella query darebbero campi unique ripetuti nessuna eccezione.

P.S.2 Anche se nn credo proprio dipenda dalla query... vi scrivo la query:
SELECT eventi_fiera.id, eventi_fiera.datimo, eventi_fiera.datfmo, eventi_fiera.datiex, eventi_fiera.datfex, eventi_fiera.datism, eventi_fiera.datfsm, eventi_fiera.note, eventi_fiera.datpar, eventi_fiera.annotazioni, manifestazioni.man_des, tipi_lavori.descri, localita_fieristiche.loc_des, localita_fieristiche.loc_naz, concat(localita_fieristiche.loc_des, " - ",localita_fieristiche.loc_naz) as localita FROM eventi_fiera join manifestazioni on eventi_fiera.`id_manifestazione` = manifestazioni.`id` join localita_fieristiche on eventi_fiera.`id_localita` = localita_fieristiche.id join tipi_lavori on tipi_lavori.`id` = eventi_fiera.`id_tipo_lavoro`

Eterna riconoscenza a chi mi aiuta!
Grazie



Babbubba
www.babbubba.net

Chiedere è curiosità ... rispondere è educazione.

ma_di Profilo | Junior Member

Ciao.
Hai provato a mettere FALSE nel ENFORCECONSTRAINTS delle nelle proprietà del dataset?

babbubba Profilo | Senior Member

Cavolo! Non ci sarei mai arrivato ....anche perche nn usavo dataset ma solo un'istanza di datatable.

Se passi nel padovano hai uno spritz pagato!!!

Alla fine ho risolto cambiando il codice così:

Dim ds As New DataSet ds.EnforceConstraints = False out = ds.Tables.Add Command = New MySql.Data.MySqlClient.MySqlCommand(QueryString, cnt) r = Command.ExecuteReader out.Load(r)
Babbubba
www.babbubba.net

Chiedere è curiosità ... rispondere è educazione.
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