=DBSETPROP("account_and_customer.address",;
"FIELD","Updatable",.T.)
USE Account_and_customer
=CURSORSETPROP("SendUpdates",.T.)
=CURSORSETPROP("WhereType",3)
GO 3
REPLACE selled WITH .T.
SKIP -1
SELECT Account
BROWSE
В Visual FoxPro существует понятие буферизации, установку которой контролирует свойство
Buffering. Значение этого свойства можно менять с помощью функции CURSORSETPROP() и
читать с помошью функции CURSORGETPROP().
Свойство Buffering может принимать пять значений:
1. - отсутствие какой-либо буферизации.
2. - пессимистическая буферизации записи. При этом значении блокируется редактируемая
запись. Блокировка автоматически снимается, и изменения записываются на диск, как
только пользователь переходит на другую запись или закрывает таблицу. Другим
способом записи изменений на диск может служить использование функции
TABLEUPDATE().
3. - оптимистическая буферизация записи. Запись блокируется только в то время, когда она
записывается на диск. Для представлений эта блокировка является значением по
умолчанию.
4. - пессимистическая буферизация таблицы. Как только вы начинаете редактирование,
блокируется вся таблица. При этом запись на диск может произойти только при вызове
функции TABLEUPDATE() или закрытии таблицы.
5. - оптимистическая буферизация таблицы. Таблица блокируется в момент записи
изменений на диск. Для записи изменений на диск надо либо вызвать функцию
TABLEUPDATE(), либо закрыть таблицу.
7.5. Запросы в Microsoft Access
В этом параграфе вы изучите методику построения разнообразных типов запросов в Access.
Узнаете о возможностях визуального инструментария и способах использования для построения
запросов макрокоманд и объектов DAO.
Запросы, без преувеличения, являются главным инструментом работы с данными в Access.
Бесспорно, вы можете создать одну таблицу с огромным количеством полей, с помощью Мастера
изготовить форму для работы с ней и посчитать, что приложение готово. При этом можно сказать,
что существует определенный круг задач, для которых такая технология вполне приемлема. Но
мы будем рассматривать другие, более распространенные случаи и задачи, которые лучше
решать с помощью запросов. И уже на основе запросов в дальнейшем мы будем строить формы.
Access предоставляет нам несколько способов создания запросов. Самый распространенный -
создание запросов с помощью Конструктора запросов. Количество видов запросов, которые мы
можем создавать с помощью Конструктора, впечатляет и резко выделяет Access среди других
продуктов. Из Конструктора запросов легко перейти в режим редактора SQL либо в табличный
режим, где мы можем просмотреть результаты запросов. Режим редактора выражений SQL мы
будем рассматривать как второй способ создания запросов. Некоторые профессионалы на
начальном этапе изучают Конструктор запросов методом "от противного". То есть пишут запрос
вручную, а потом выходят в режим Конструктора. Новичкам имеет смысл почаще делать
обратную операцию, то есть создавать запросы в Конструкторе и переходить в режим редактора,
для того чтобы лучше изучить синтаксис SQL.
Третий способ - это программный способ создания запросов с помощью объектов доступа к
данным (DAO). Для этого используется объект QueryDef, который и хранит в себе описание SQL
запроса.
Последний способ - создание строки запроса и выполнение его с помощью команды
DoCmd.RunSQL. Этот способ достаточно популярен, при этом база данных становиться более
компактной, так как описание запроса хранится в виде строки кода, а не в виде описания
объекта. Его недостатком является то, что мы не можем получить таким образом объект
Recordset. В то же время, этот способ прекрасно годится для создания и выполнения запросов
действий (Update, Delete, Insert), так как часто приходится скрывать от пользователя суть
динамики изменения наборов данных. Хранение запросов модификации в базе данных, если мы
не хотим, чтобы пользователь без необходимости запускал эти запросы, заставляет нас думать об
converted to PDF by HupBaH9I