Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

Код приведи. Отгадывать твои мысли нет возможности.


Наверх

Титульная страница Поиск, карта сайта Написать письмо