-
Доброго здоровья уважаемые. Разбираюсь в чужих исходниках и пытаюсь исправлять ошибки. Столкнулся с совершенно непонятной проблемой. На форме есть визуальный компонент TcxGrid к нему "привязан TUniTable. Одному из полей таблицы присваивается значение выбираемое из списка другой формы. Процесс присвоения выглядит так: if dmSecBD.taOPERS.State = dsBrowse then begin dmSecBD.taOPERS.Edit; dmSecBD.taOPERS.FieldByName('PERSONID').AsInteger := ASelectionList[0].PersonID; end;
Все визуально для пользователя в процессе работы программы хорошо. При Scroll'елре видны значения которые присвоены строкам. Переоткрывание, обновление списка на форме не теряют значений. НО, перезапуск программы показывает, что на самом деле все пусто. В самих полях таблицы значение NULL. "Вынул" я на белый свет это поле в программе и руками "забил" данные. Все сохраняется как и положено, причем в случае ручного ввода и через выбор значения из списка другой формы события отрабатываются одни и те же. Но почему при ручном вводе значение сохраняется, а присвоенные через форму нет ?????
Я осознаю, что надежда на Вашу помощь минимальна, но может кто подскажет в каком направлении "копать". Может есть хоть какие нибудь соображения, может кто тоже сталкивался с подобным поведением.
Буду благодарен за любые советы, подсказки и т.п. С уважением Дмитрий
-
commit?
-
> Кщд (13.07.11 10:02) [1] > > commit?
TUniTabel аналог TTable. Тут метод POST и он отрабатывает. После него свойство State переходит из состояния dsEdit в dsBrowse.
-
ещё раз: после редактирования у вас не происходит commit.
-
если в соединении не указано, что commit автоматический, то его надо явно делать.
можно 150 раз сказать Post, это будет видно только для текущего сеанса, пока не будет commit.
-
Коллеги благодарю Вас за проявленную настойчивость в убеждении. Действительно, принудительно прописал Commit и вуаля.
С уважением Дмитрий.
|