Обработка изменений данных в клиентском приложении стр. 1 Обработка изменений данных из клиентского приложения Способы сохранений изменений: 1. через кэш-память 2. через хранимую процедуру кэш-память Работая с данными, пользователь манипулирует только копией базы данных, помещенных в оперативную память, которая называется КЭШ. После выполнения, каких – либо действий с данными выполняется метод Post_автоматический или принудительный перенос изменений в базу данных. Для работы с данными в Кеш-памяти используется специальный компонент IBUpdateSQL со странице InterBase, а для компоненты IBQuery есть свойство CashedUpdate, которое указывает, будут ли данные изменений переноситься в базу данных автоматически – тогда это False, или изменения сохраняются в КЭШ – тогда True. Для внесения изменений для КЭШа в базу данных применяется метод ApplyUpdates. При записи изменений участвует механизм транзакции, доступный через компонент IBTransaction. Для ссылки на содержащиеся в КЭШе значения полей, в SQL командах можно использовать параметры, которые перед выполнением запроса меняют на соответствующие значения. ! Параметр начинается с двоеточия; имя его совпадает с полем редактирования таблицы. Можно использовать значение до редактирования (приставка old_) ! Для проверки были сделаны изменения, то есть, есть ли данные в КЭШе, используются свойства Update Pending. True – есть, False – ничего нет. Способы работы с изменением данных через Кэш: Вносить изменения в базу данных после обработки каждой записи, то есть при переходе на следующую запись (Alter Post –для Query) Вносить изменения в базу данных по окончанию работы приложения, или при нажатии какой – либо кнопки (событие Click – для Button, событие Close для формы). Этапы работы с КЭШ: 1. Создать транзакцию для управления базой данных. 2. Поместить специальный компонент для работы с КЭШ IBUpdateSQL. 3. Для IBQuery установить свойства: - компонент для манипулирования КЭШем (Update Object); - включить сохранение в КЭШ (CashedUpdate: = True). 4. Задать для компонента манипулирования КЭШем свойства: - Текст SQL запроса по удалению записей (Delete SQL); - Текст SQL запроса для добавления (Insert SQL); - для изменения (Modify SQL). 5. Для нужного события, когда сохраняются данные в базу вызвать методы для компонента IBQuery: - запустить сохранение данных из КЭШа (ApplyUpdates); - сохранить транзакцию после работы с КЭШ (метод Commit для компонента IBTransaction). Обработка изменений данных в клиентском приложении стр. 2 Хранимые процедуры Часто выполняемые операции с данными, хранящимися на стороне сервера (удаление, изменение значений и добавление). Удобней организовать в базе данных в виде хранимой процедуры и, не создавая ее, обращаться с клиентской стороны. Этапы работы с хранимыми процедурами 1. На стороне сервера создать элемент базы данных (процедуру) 2. В клиентском приложении для связи с хранимой процедурой в модуль данных 3. 4. 5. 6. 7. помещается специальный компонент IBStoredproc (страница InterBase) Основные свойства: Database – имя компонента базы данных StoredprocName – имя хранимой процедуры Params – входные, выходные параметры процедуры (только для просмотра) Программным путем передать данные как входные параметры хранимой процедуры при помощи метода ParamByName: DataModule2. St_group. ParamByName (‘New_name’). AsString:= Edt_name. Text; После того как передали входные значения в процедуру необходимо выполнить метод Prepare по подготовке хранимой процедуры на выполнение: DataModule2. St_group. Prepare; Запустить процедуру на выполнение метода ExecProc: DataModule2. St_group. ExecProc; После выполнения хранимой процедуры, сервер должен завершить транзакцию с сохранением методом Commit: DataModule2. Tr_dek. Commit; Сохранение транзакции приводит к автоматическому закрытию доступа к таблице базы данных. Открыть ее можно методом Open: DataModule2. Tb_group. Open; Закладки в наборе данных Закладка – указатель на текущую запись в наборе данных. Помогает в любой момент вернутся в эту запись. Для хранения закладки Delphi имеет специальный тип данных TBookMark. Хранящийся в модуле DB. !!!В наборе данных можно использовать несколько разных закладок. Действия, совершаемые с закладками: 1. Установка закладки, то есть сохранение номер текущей записи в переменную. (Имя закладки:=Имя набора.GetBookMark) 2. Переход к закладке, то есть установка указателя текущей записи, номер которой сохранен в переменную. (Имя набора.GotoBookMark(Имя переменной)) 3. Удаление закладки, то есть отчистка переменной. (Имя набора.FreeBookMark(Имя закладки)) 4. Проверка установки закладки. (Имя набора.BookMarkValid(Имя закладки))