-
Привет! Подскажите , пожалуйста, в такой ситуации: Есть TdbGridEh c TAdoQuery. В TAdoQuery выполняю запрос:
select
name_benefit,
(mnn+', '+f_ls+', '+sum+', №'+str(kol_v_upak, len (kol_v_upak))) as ls,
cause from detal_orders
inner join benefit on benefit.id = detal_orders.benefit
inner join sp_ls on sp_ls.id_ls=detal_orders.ls_id
where detal_orders.Parent_id = 1
В Гриде все хорошо отображается, но как только если изменить значение какого-нибудь поля появляется ошибка not edit or insert mode. Подскажите, как не сохранять данные через Квери, а просто забрать значения, чтобы после их обработать?
-
> ошибка not edit or insert mode. означает буквально то, что написано, датасет не в режиме редактирования/вставки, чтобы переключить в этот режим нужно у него процедуру вызвать - AdoQuery.Edit;/.Insert; проблема в том, что грид этого сделать не может... причин куча, но вот что конкретно тут вижу 1 отсутствие в запросе ключевого поля, без него неизвестно какую запись редактировать. 2 вычисляемое поле... его вообще нельзя редактировать, выражение "в обратку" не разбираются. 3 составной запрос, неизвестно в какой таблице и по какой связи редактировать... тут нужно указывать "главную" таблицу.
> а просто забрать значения, чтобы после их обработать? забрать куда? в файл можно весь результат сохранить - SaveToFile.
-
> означает буквально то, что написано, датасет не в режиме > редактирования/вставки, чтобы переключить в этот режим нужно > у него процедуру вызвать - AdoQuery.Edit;/.Insert; > проблема в том, что грид этого сделать не может... причин > куча
А как сделать, чтобы TAdoQuery не пытался сохранить данные, а просто держал их в себе?
-
"оторвать" коннект .Connection:= nil; или открыть в режиме ltBatchOptimistic и не выполнять последнюю операцию "загрузки на сервер". но может не помочь, если рекордсет/типы полей сервер вернул не редактируемого типа (ключи например часто не получается без смены типа редактировать);
-
А если в OnPostError прописать сохранение, как мне нужно?
-
а сам то определишь однозначно запись которую нужно сохранить? если да то дерзай. но не в ошибке, а в афтерпост к примеру, оригинальное событие можно "абортнуть" ну и т.д. с разными последствиями разобраться... но имхо проще все таки следовать правилам.
-
Понял. Спасибо
|