![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
POST and IBX [D5, IB5.x]
softmaster © (2003-05-23 12:09:00)Вот не понимаю я!
использую IBX.
2 таблицы Главная и подчиненная.
вызываю для главной insert
некоторые поля сразу заполняю из проги.
Затем вызываю POST и сразу EDIT.
Высвечиваю окно для редактирования данных пользователем.
он их редактирует, затем POST и обновляю набор.
Прикол в том, что данные не сохраняются почему-то.
Вернее те данные, которые я не вводил до начала высвечивания
формы для редактирования- сохраняются,
а те, которые уже вводил- не сохраняются.!!!
Не пойму в чем дело
что я не так делаю.????
Помогите пожалуйста разобраться...
Еще есть прикол с заполнением подчиненной таблицы,
но об этом позже...
softmaster (2003-05-23 17:46:00) [1]Grid ассоциированный с Orders
Johnmen (2003-05-23 17:38:00) [2]А как видно, что не сохраняет ?
softmaster (2003-05-23 17:35:00) [3]нет, все равно не сохраняет.
дело не в форме, черт знает что такое...
softmaster (2003-05-23 17:31:00) [4]щас попробую
Johnmen (2003-05-23 17:19:00) [5]Тестируем :
.........
D.Orders.edit; //и открываем по новой
//form_Order_Edit:= TForm_Order_Edit.Create(Application);
//form_Order_Edit.showModal;
D.Orders.FieldByName(...).As...:=...;
//if form_order_edit.ModalResult=mrOk then
begin
D.orders.post;
D.Orders.Refresh;
end
Что получается ?
softmaster (2003-05-23 17:17:00) [6]Получается бред какой-то-
те поля которые я задал по умолчанию, ну там дата документа, клиент, способ приобретения и т.п.
D.OrdersRASPOL_RUL.AsString:="Левый";
D.OrdersYEAR_PRODUCTION.asString:=DateToStr(Date);
D.OrdersDat_.asString:=DateToStr(Date);
D.OrdersData_Ispoln.asString:=DateToStr(Date+D.paramsSrok_Isp.asInteger);
d.OrdersSPOSOB_PRIOBR.AsString:="Наличные";
d.OrdersCUSTCODE.asInteger:=d.CustomsCode.AsInteger;
D.OrdersCARMODEL.AsInteger:=d.ModeliCODE.AsInteger;
D.OrdersDOCNUM.AsInteger:=D.Query_Ord_DocNumGEN_ID.AsInteger;
d.OrdersCODE_WALUTA.asInteger:=0;
D.OrdersKURS.AsFloat:=1;
d.OrdersPREDOPLATA.asFloat:=0;
d.OrdersCODE_WALUTA_PREDOPLATA.asInteger:=0;
после появления формы для редактирования не изменить.
только после закрытия формы и повторного открытия этой же записи на редактирование можно поменять значения полей.
Что еще может быть не в поряде?
softmaster (2003-05-23 17:12:00) [7]в форме ничего нет
только набор DBEdit`ов
что за ерунда?
Johnmen (2003-05-23 16:51:00) [8]Ну прям не знаю, чудеса какие-то...:)
Возможно, все дело в той волшебной динамически создаваемой форме...
softmaster (2003-05-23 16:40:00) [9]Orders-ibTable
D-datamodule;
Johnmen (2003-05-23 16:09:00) [10]Что есть Orders ?
softmaster (2003-05-23 16:03:00) [11]все равно не работает
if form_order_edit.ModalResult=mrOk then
begin
D.orders.post;
D.Orders.Refresh;
end
else
begin
D.orders.post;
softmaster (2003-05-23 15:58:00) [12]Нет, там POST есть
то есть если ОК, то запоминаем и обновляем
если нет- удаляем
Johnmen (2003-05-23 12:29:00) [13]>>>
if form_order_edit.ModalResult=mrOk then
begin
D.Orders.Refresh;
end
else
begin
D.orders.post;
>>>
То есть эта логика правильна ? :) В отсутствии Post"а при mrOk ?
softmaster (2003-05-23 12:17:00) [14]Пишу код
//-----------------получение значения поля DOCNum
D.Query_Ord_DocNum.Close;
D.Query_Ord_DocNum.Prepare;
D.Query_Ord_DocNum.Open;
//-----------------
D.Orders.insert; //метод Insert
D.OrdersRASPOL_RUL.AsString:="Левый";
D.OrdersYEAR_PRODUCTION.asString:=DateToStr(Date);
D.OrdersDat_.asString:=DateToStr(Date);
D.OrdersData_Ispoln.asString:=DateToStr(Date+D.paramsSrok_Isp.asInteger);
d.OrdersSPOSOB_PRIOBR.AsString:="Наличные";
d.OrdersCUSTCODE.asInteger:=d.CustomsCode.AsInteger;
D.OrdersCARMODEL.AsInteger:=d.ModeliCODE.AsInteger;
D.OrdersDOCNUM.AsInteger:=D.Query_Ord_DocNumGEN_ID.AsInteger;
d.OrdersCODE_WALUTA.asInteger:=0;
D.OrdersKURS.AsFloat:=1;
d.OrdersPREDOPLATA.asFloat:=0;
d.OrdersCODE_WALUTA_PREDOPLATA.asInteger:=0;
D.Orders.Post;/<---здесь запоминаем
D.Orders.edit; //и открываем по новой
form_Order_Edit:= TForm_Order_Edit.Create(Application);
form_Order_Edit.showModal;
if form_order_edit.ModalResult=mrOk then
begin
D.Orders.Refresh;
end
else
begin
D.orders.post;
DS.Delete_OrdItem.Close;
DS.Delete_OrdItem.Prepare;
DS.Delete_OrdItem.ParamByName("DocNum").asInteger:=D.OrdersDOCNUM.AsInteger;
DS.Delete_OrdItem.ExecSQL;
DS.Delete_Order.Close;
DS.Delete_Order.Prepare;
DS.Delete_Order.ParamByName("DocNum").asInteger:=D.OrdersDOCNUM.AsInteger;
DS.Delete_Order.ExecSQL;
d.Orders.Refresh;
end;
Form_Order_Edit.free;
Наталия (2003-05-23 12:13:00) [15]Код приведи. Отгадывать твои мысли нет возможности.