La situazione è questa:
Ho un db Access con delle tabelle correlate.
In particolare ho collegato la tabella clienti alla tabella prodotti.
Quando cancello un prodotto verifico che non sia già stato assegnato ad un cliente. E qui sorgono i problemi.
Esaminiamo con ordine la questione.
Ho collegato un AccessDataSource ad un GridView al quale ho aggiunto un TemplateField per la cancellazione del record (ho semplicemente inserito un ImageButton) e ho inserito un CommandName="Delete".
Quando clicco sul tasto per cancellare il record, scateno l'evento RowDeleting del GridView per controllare se per quel campo che intendo cancellare, corrisponde un cliente assegnato. In caso affermativo apro un panel e comunico l'impossibilità di cancellare il record.
Questo il codebehind:
Protected Sub GridView2_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView2.RowDeleting
'MODELLO DA CANCELLARE
Dim ModSel As String = e.Values("Modello").ToString
Dim IDModSel As Integer = GridView2.DataKeys(e.RowIndex).Value
'VERIFICO CHE IL MODELLO CALDAIA NON SIA GIA' CORRELATO AD UN CLIENTE
AccessDataSource4.DataSourceMode = SqlDataSourceMode.DataReader
AccessDataSource4.SelectCommand = "SELECT Modello FROM GEST_Modelli INNER JOIN GEST_Prodotti ON GEST_Modelli.IDModello = GEST_Prodotti.IDModello WHERE GEST_Modelli.Modello = '" & ModSel & "'"
Dim ReadDb As System.Data.IDataReader = CType(AccessDataSource4.Select(DataSourceSelectArguments.Empty), System.Data.IDataReader)
If ReadDb.Read Then
pnlMessaggi.Visible = True
lblMessaggio.Text = "Modello associato ad un cliente<br>Impossibile cancellare"
End If
ReadDb.Close()
ReadDb.Dispose()
AccessDataSource4.Dispose()
End Sub
Ma non riesco a gestire l'eccezione e quando cancello un campo correlato, mi esce il seguente errore:
Impossibile eliminare o modificare il record. La tabella 'Prodotti' contiene record correlati.
Dove sbaglio?
Probabilmente mi sto perdendo in un bicchier d'acqua.