Конференция "Начинающим" » Сохранение TADOQuery [D7, 2003]
 
  • lewka © (05.10.18 00:34) [0]
    Привет! Подскажите , пожалуйста, в такой ситуации:
    Есть 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.

    Подскажите, как не сохранять данные через Квери, а просто забрать значения, чтобы после их обработать?
  • sniknik © (05.10.18 10:38) [1]
    > ошибка not edit or insert mode.
    означает буквально то, что написано, датасет не в режиме редактирования/вставки, чтобы переключить в этот режим нужно у него процедуру вызвать - AdoQuery.Edit;/.Insert;
    проблема в том, что грид этого сделать не может... причин куча, но вот что конкретно тут вижу
    1 отсутствие в запросе ключевого поля, без него неизвестно какую запись редактировать.
    2 вычисляемое поле... его вообще нельзя редактировать, выражение "в обратку" не разбираются.
    3 составной запрос, неизвестно в какой таблице и по какой связи редактировать... тут нужно указывать "главную" таблицу.

    > а просто забрать значения, чтобы после их обработать?
    забрать куда?
    в файл можно весь результат сохранить - SaveToFile.
  • lewka © (05.10.18 11:51) [2]

    > означает буквально то, что написано, датасет не в режиме
    > редактирования/вставки, чтобы переключить в этот режим нужно
    > у него процедуру вызвать - AdoQuery.Edit;/.Insert;
    > проблема в том, что грид этого сделать не может... причин
    > куча


    А как сделать, чтобы TAdoQuery не пытался сохранить данные, а просто держал их в себе?
  • sniknik © (05.10.18 12:26) [3]
    "оторвать" коннект .Connection:= nil; или открыть в режиме ltBatchOptimistic и не выполнять последнюю операцию "загрузки на сервер". но может не помочь, если рекордсет/типы полей сервер вернул не редактируемого типа (ключи например часто не получается без смены типа редактировать);
  • lewka © (05.10.18 12:34) [4]
    А если в OnPostError прописать сохранение, как мне нужно?
  • sniknik © (05.10.18 12:46) [5]
    а сам то определишь однозначно запись которую нужно сохранить? если да то дерзай.
    но не в ошибке, а в афтерпост к примеру, оригинальное событие можно "абортнуть" ну и т.д. с разными последствиями разобраться... но имхо проще все таки следовать правилам.
  • lewka © (05.10.18 12:52) [6]
    Понял. Спасибо
 
Конференция "Начинающим" » Сохранение TADOQuery [D7, 2003]
Есть новые Нет новых   [134427   +34][b:0][p:0.001]