29 messaggi dal 04 ottobre 2001
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.

Alberto
29 messaggi dal 04 ottobre 2001
Lo dicevo io che mi stavo perdendo in un bicchier d'acqua.
E' sufficiente annullare con un e.Cancel = True il salvataggio del record che scatena l'eccezione e quindi gestirla in maniera opportuna.

Alberto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.