C # TableAdapter.Update () использует UPDATE, а не INSERT - PullRequest
1 голос
/ 25 марта 2010
SELECT        WO_BreakerRail.ID, indRailType.RailType, indRailType.RailCode, WO_BreakerRail.CreatedPieces, WO_BreakerRail.OutsideSource, WO_BreakerRail.Charged, 
                         WO_BreakerRail.Rejected, WO_BreakerRail.RejectedToCrop, COALESCE (WO_BreakerRail.Date, @date) AS Date
FROM            indRailType LEFT OUTER JOIN
                         WO_BreakerRail ON indRailType.RailCode = WO_BreakerRail.RailCode AND WO_BreakerRail.Date = @date

У меня есть DataGridView, который связан с адаптером таблицы. Это запрос выбора, который я использую для заполнения моего адаптера. Столбец ID будет нулевым, если в WO_BreakerRail нет соответствующих записей. Команда update работает нормально, когда я обновляю строку, в которой есть данные. Но если я обновлю строку, в которой отсутствует соответствующая информация в WO_BreakerRail, произойдет сбой, поскольку адаптер таблицы считает, что она должна обновляться, поскольку я изменил строки в его коллекции строк, но в WO_BreakerRail такой строки нет. Есть ли способ указать адаптеру таблицы использовать команду вставки, когда идентификатор равен нулю, а не команду обновления?

Ответы [ 2 ]

2 голосов
/ 25 марта 2010

Для строк, которые не имеют данных, установите для состояния строки новое вызов: dataRow.SetAdded().

0 голосов
/ 25 марта 2010

Я думаю, вот что вам не хватает в вашем методе добавления.

   // ... in your method where your inserting 
        DataRow row = MyDataTable.NewRow();
        // .... add data to row ....
        MyDataTable.Rows.Add(row);
...