![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработка БД Access 2000 [Access]
sdc-alex © (2009-07-07 19:45:00)Подскажите, почему в нижеследующем коде не происходит сохранение данных. В гриде отображаются, но при попытке перейти к другой записи все сбрасывается?
procedure TMainForm.CalcFields;
var
PrevData9,PrevData12: Integer;
begin
DataModule1.MainTableElectro.Open;
DataModule1.MainTableElectro.Edit;
if DataModule1.MainTableElectro.Bof <> true then
begin
DataModule1.MainTableElectro.Prior; // шаг назад
PrevData9 := DataModule1.MainTableElectroActive9.AsInteger; // сохранить 9 яч.
PrevData12 := DataModule1.MainTableElectroActive12.AsInteger; // сохранить 12 яч.
DataModule1.MainTableElectro.Next; // шаг вперед
// рассчитать значения полей
DataModule1.MainTableElectro.Edit;
DataModule1.MainTableElectro.FieldValues['Sum9'] := DataModule1.MainTableElectroActive9.AsInteger - PrevData9;
DataModule1.MainTableElectro.FieldValues['Sum12'] := DataModule1.MainTableElectroActive12.AsInteger - PrevData12;
DataModule1.MainTableElectro.Post;
end;
end;
Сергей М. (2009-07-10 08:25:00) [1]
> функция выполняется сразу после добавления новой записи
> (после выполнения Post)
А тогда зачем нужен вызов Open ?
Post же не может работать, если НД не открыт .. А если он открыт, то зачем его тут же еще раз открывать ?
Или этот Open относится совсем к другому НД, нежели к тому к которому привязан грид ?
sdc-alex (2009-07-09 21:44:00) [2]В обработчике перехода к другой записи нет ни каких операций. Вообще пока описаны только функции добавления записи, редактирования и удаления.
P.S. Указанная мною функция выполняется сразу после добавления новой записи (после выполнения Post). Добавление, редактирование и удаление проходит нормально. К базе обращаюсь через ADO, пишу под Win32
Помагите, пожалуйста, а то я чо то нифига не врубаюсь.
Anatoly Podgoretsky (2009-07-08 08:47:00) [3]Что творишь
sniknik (2009-07-07 22:17:00) [4]тогда резонный вопрос - зачем ты привел совершенно не связанную с проблемным местом (переход к другой записи) функцию? что ты хочешь, чтобы мы тут в ней нашли?
sdc-alex (2009-07-07 21:04:00) [5]Функция с open вызывается только при добавлении новой строки и при редактировании строки. Это не функция обработки вычисляемых полей.
sniknik (2009-07-07 19:57:00) [6]> все сбрасывается?
а у тебя эта функция с Open на каждом переходе между строк вызывается? тогда ничего удивительного.