Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Проблема с обновлением базы(применение и отмена изменений) / 4 сообщений из 4, страница 1 из 1
14.04.2005, 20:48
    #33017062
NordS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с обновлением базы(применение и отмена изменений)
Есть датасет в котором есть родительская и дочерняя таблица. Каждая запись родительской таблицы (и соответственно связанные с ней дочерние) редактируются в своем экземпляре форме. При сохранении изменений, данные должны сбрасываться в базу(есть два датаадаптера - для родительской и дочерней). При отмене должны просто отменяться в датасете. Вопрос стоит в том как это правильно реализовать, т.к. столкнулся с некоторыми сложностями:
1)Если просто обновлять через датаадаптер передавая ему таблицу, то он сбросит данные, которые редактируются в других формах и не были сохранены
2)Пытаюсь сделать обновление вручную:


currentBillRow.EndEdit();
FormMain frmMain=(FormMain)this.MdiParent;
DataRow[] rows1;
DataRow[] rows2;
rows1=dsMReport.Bill.Select("BillId="+currentBillRow.BillId,"BillId",DataViewRowState.ModifiedCurrent |
(DataViewRowState.Deleted | DataViewRowState.Added));
rows2=dsMReport.BillContent.Select("BillId="+currentBillRow.BillId,"BillId",DataViewRowState.ModifiedCurrent |
(DataViewRowState.Deleted | DataViewRowState.Added));
daBill.Update(rows1);
daBillContent.Update(rows2);
currentBillRow.AcceptChanges();



И отменение изменений тоже вручную:

currentBillRow.EndEdit();

DataRow[] rows=dsMReport.BillContent.Select("BillId="+currentBillRow.BillId,"",DataViewRowState.ModifiedCurrent | (DataViewRowState.Deleted | DataViewRowState.Added));
foreach(DataRow row in rows)
{
row.RejectChanges();
}
currentBillRow.RejectChanges();


Вроде бы все нормально, но натыкаемся на следующие грабли: если на одной форме отменить изменения, а на другой сохранить, то при сохранении вылетает експешен "This row has been removed from a table and does not have any data. BeginEdit() will allow creation of new data in this row." хотя в массивах лежат правильные строки. В чем может быть дело?
...
Рейтинг: 0 / 0
14.04.2005, 21:43
    #33017101
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с обновлением базы(применение и отмена изменений)
Во-первых, обновляйте отдельно deleted, modified и added записи.
Во-вторых, что у вас является Master а что Detail
Хотелось бы взглянуть, код редактирования и "сохранения" в других формах.

+ непомешала бы структура таблиц



Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
14.04.2005, 22:05
    #33017114
NordS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с обновлением базы(применение и отмена изменений)
SaВо-первых, обновляйте отдельно deleted, modified и added записи.

Пробывал не помогает.

SaВо-вторых, что у вас является Master а что Detail
Bill - master, BillContent - detail

Таблицы:
Agent(AgentId,Name)
BillType(BillTypeId,Name)
Material(MaterialId,Name,UnitId)
Unit(UnitId,Name)
Bill(BillId,BillTypeId,AgentId,Number,Date,VAT,VATValue)
BillContent(BillId,MaterialId,Price,Count,Cost,PriceVAT)

Отношения:
AgentToBill
BillTypeToBill
UnitToMaterial
MaterialToBillContent

Поля Cost и PriceVAT вычисляемые

SaХотелось бы взглянуть, код редактирования и "сохранения" в других формах

Имеется ввиду не в других формах, а вдругих экземплярах этой формы. Т.е. ситуация когда редактируется(создано две новых) две накладные и в одной изменеия отменяются, а в другой применябтся вылетает такой вот ексепшен.
...
Рейтинг: 0 / 0
23.04.2005, 02:35
    #33031505
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с обновлением базы(применение и отмена изменений)
NordS
Имеется ввиду не в других формах, а вдругих экземплярах этой формы. Т.е. ситуация когда редактируется(создано две новых) две накладные и в одной изменеия отменяются, а в другой применябтся вылетает такой вот ексепшен.


А насколько логически обоснованно использование нескольких экземпляров форм, когда могут произойти такие накладки?

+ покажите код как делаются изменения.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Проблема с обновлением базы(применение и отмена изменений) / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]