Ciao a tutti,
come scritto nel titolo sto facendo a botte con una query su tabelle correlate.
Ho un'applicazione in VB2008 che impiega un semplice database scritto con SQL Express 2005 (direttamente dall'ambiente di sviluppo del VB2008 Express). Il database, facciamo conto, è fatto da proprietario ed automobile, due tabelle correlate aventi la seguente struttura:
proprietario(IDprop, Nome, Cognome) con IDprop come chiave
automobile(IDauto, Marca, Modello, IDprop) con IDauto come chiave
Creo un dataset con il wizard (mi trovo comodo a fare così) chiamandolo ProprietarioAutoDataSet ed imposto nel file xsd la relazione in modalità "Both relation and foreign key constraint" impostando anche su "Cascade" le regole di aggornamento "Update" e "Delete".
Trascino in un form, dal dataset appena creato, la tabella proprietario nella modalità "dettagli" e la tabella automobile nella modalità "datagridview", nell'evento Load vengono aggiunte le due righe che eseguono il riempimento delle tabelle (i due metodi Fill). Il tutto funziona correttamente, la modalità dettagli mi fa vedere i proprietari, nella griglia vedo le automobili associate. Posso navigare tra i proprietari con il binding navigator, e tutto procede senza errori.
A questo punto creo una query (corretta) con il Query Builder, la chiamo FillByCognome che semplicemente seleziona il proprietario in base al parametro "cognome" che gli passo (la query funziona). Il codice diventa:
[CODE ]
Private Sub frmSearch_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.ProprietarioTableAdapter.FillByCognome(Me.Propr ietarioAutoDataSet.proprietario, "D") 'Tutti i cognomi la cui prima lettera è D (nella query c'è "D" + '%')
Me.AutomobileTableAdapter.Fill(Me.ProprietarioAuto DataSet.automobile)
End Sub
[/CODE]
Mando in esecuzione e....non funziona più niente perchè mi dice che la tabella proprietario non può essere cancellata
Se come prima istruzione metto Me.ProprietarioAutoDataSet.EnforceConstraints = False allora tutto funziona, ma se provo prima di "End Sub" a mettere EnforceConstraints su True per ripristinare i vincoli, il debugger genera un errore (Constraint Exception) e mi dice che alcune righe violano vincoli di chiave esterna oppure unique.
Su una singola tabella funziona tutto...la query, infatti, è corretta, ma se abilito la relazione tra le tabelle succede il dramma.
Per chi volesse rispondermi, posto il link dal quale ho preso spunto (su una singola tabella):
http://msdn.microsoft.com/en-us/vbasic/bb643828.aspx
Tra gli stessi video viene mostrato come creare il DB in SQLExpress ed impostare la relazione.
Grazie a chiunque mi soccorrerà...![]()