не сохраняются изменения через TSQLQuery

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

resident
энтузиаст
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Сообщение resident »

Снег Север писал(а):Никогда не видел UpdateStatus для отдельной записи...

А вы никогда не ходили по моим ссылкам в этой теме?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

resident писал(а):
Снег Север писал(а):Никогда не видел UpdateStatus для отдельной записи...
А вы никогда не ходили по моим ссылкам в этой теме?
Продолжаю тупить, ибо по вашим ссылкам не обнаружил ничего про UpdateStatus для отдельной записи. Применение ApplyUpdates - это совсем из другой оперы.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

pupsik,
ну вот смотрим, например, последнюю ссылку,
UpdateStatus determines the current state of the record buffer, if updates have not yet been applied to the database.
И хотя дальше там пишут про статус Record'ов, из примера видно, что определяется именно DataSet.UpdateStatus и никак иначе. Я это всегда понимал именно так - статус, независимо от числа измененных записей, есть только у DataSet.
RusDeveloper
новенький
Сообщения: 92
Зарегистрирован: 06.04.2016 11:02:43

Сообщение RusDeveloper »

Снег Север писал(а):state of the record buffer

заметьте, не state of the buffer of records или state of the dataset buffer. и на практике, увы, так и есть...
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

RusDeveloper
Косвенно у вас, в данной ветке, два вопроса. Но они не отвечают на главный. Что вы хотите сделать...

Снег Север что мешает вам воспользоваться гуглом и узнать зачем?
По плохой, моей, памяти. Была (есть) борланда технология -midas. Позволяло производить своего рода кеширования записей в офлайн режиме. При подключении производился перенос записи. У каждой записи было свое св-во (т.е. UpdateStatus). Можно было "пробежаться" и узнать что делать с данной записью.
Можно, воспользовавшись св-ом датасета узнать в каком состоянии находится датасет.
В реальном виде данные плюшки возможно и имеют место в лазаре. Но..о ими редко кто пользуются. Учитывая редкость использования возможны баги обработки.
На оф. форуме можно найти пару рабочих примеров. можно и в ньюс конфе посмотреть.

п.с
Кеш данных можно и свой организовать. На базе хмл, к примеру.
Я, иногда, UpdateStatus для визуально отображения использовал (лет эдат ... назад). Ну..у еще был момент "перехвата" сохранения дбф (если не изменяет память - с индексами "баловался").

п.с.п.с.
заметьте, не...
уж сори но..о: заметьте данная инфа в нете свободно "лежит". Если что то не работает в коде - это не значит что баг иде или фпс. Около 90% - не верная интерпретация желаемого с действительностью.
resident
энтузиаст
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Сообщение resident »

Снег Север писал(а):Продолжаю тупить, ибо по вашим ссылкам не обнаружил ничего про UpdateStatus для отдельной записи. Применение ApplyUpdates - это совсем из другой оперы.

Первоначально вопрос звучал как:
как мне определить были ли сделаны изменения или нет для некоторых записей из множества?

Я что-то подумал, что вопрос как раз о том какая часть буфера была таки применена на сервере при ApplyUpdates. А если же это из другой оперы, тогда сорь.
Nick74
новенький
Сообщения: 25
Зарегистрирован: 15.03.2017 12:55:06
Откуда: Москва

Сообщение Nick74 »

Та же проблема. Если БД используется только как плоская табличка, вся логика которой обрабатывается Exe-шником, то подход с ApplyUpdates замечательный и великолепный.
Но стоит повесить на базу данных простейшую логику в триггере, не дающую производить некорректные операции, как этот самый ApplyUpdates портит жизнь, так как меняет статус датасета и позицию курсора ДО передачи данных в базу данных. Даже в режиме AutoApplyUpdates и даже если в AfterPost вписать этот ApplyUpdates насильно.
Ответить