как удалить строку из связанной дочерней таблицы - PullRequest
1 голос
/ 05 февраля 2011

Я создал поле со списком для навигации по ордерам в виде сетки.

    Dim adapter As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM Customers", cstr)
    Dim adapter2 As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM Orders", cstr)
    adapter.Fill(ds, "Customers")
    adapter2.Fill(ds, "Orders")
    ds.Relations.Add("CustOrd", ds.Tables("Customers").Columns("CustomerID"), ds.Tables("Orders").Columns("CustomerID"))

    bs = New BindingSource(ds, "Customers")

    ComboBox1.DataSource = bs
    ComboBox1.DisplayMember = "CompanyName"
    ComboBox1.ValueMember = "CustomerID"

    DataGridView1.DataSource = bs
    DataGridView1.DataMember = "CustOrd"

Теперь я хочу добавить кнопку удаления для выбранной строки сетки в таблице «Заказы».Но у меня есть некоторое недопонимание того, как это должно работать для этого отношения данных.

Если я использую BindingSource.RemoveAt (index), он удаляет все строки для всего выбранного CustomerID и фактически не сохраняет изменения.Я не достаточно опытен, не могли бы вы привести пример моего кода, как удалить строку из Orders db.

ОБНОВЛЕНИЕ: Итак, я создал это для удаления, но все еще есть проблемы:

    Dim key As String = DataGridView1.SelectedRows(0).Cells("OrderID").Value.ToString
    Dim dr As DataRow = ds.Tables("Orders").Rows.Find(key)
    dr.Delete()
    adapter2.Update(ds, "Orders")

Ошибка: оператор DELETE конфликтует с ограничением REFERENCE "FK_Order_Details_Orders".

Да, я сделал, но когда я удаляю все заказы для клиента и нажимаю на сетку, я получаю -1 в строке.Почему?

1 Ответ

1 голос
/ 05 февраля 2011

Вы просто удаляете заказы.Вам также необходимо удалить детали заказа, который является дочерней таблицей заказов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...