After you're finished offline, you can update the data on the server using the same table update transactions you usually use with online data. При работе с удаленными данными, придерживайтесь приведенных ниже советов:
-
Для обновления единичной записи используйте автоматические транзакции.
-
Для пакетного обновления используйте ручные транзакции.
-
При необходимости включите код для обнаружения конфликтов обновления, создайте журнал регистрации конфликтов (log-файл) и разберитесь с конфликтами.
Перед началом процесса обновления, вам необходимо использовать команду USE с ключевым словом ONLINE для восстановления соединения с базой данной на сервере. После выбачи команды, Visual FoxPro попытается найти базу данных на сервере, используя информацию об источнике данных, хранящуюся в представлении. После того, как соединение будет установлено, вы можете использовать TABLEUPATE( ) для процесса обновления данных на сервере данными с локального компьютера.
Чтобы убедиться в том, что информация о соединении корректна, независимо от нахождения либо сервера, либо таблиц представления, вам необходимо использовать синтаксис строки соединения вместо именованного соединения.
Обновление пакта записей в локальных
Для процесса пакетного изменения на локальных таблицах, вы можете используовать ручные транзакции, которые позволяют вам вести процесс всего пакета изменений внутри единичной транзакции, вместо серии отдельных транзакций.
Код | Комментарии |
---|---|
|
Восстанавливает соединение с сервером и открывает представление. |
|
Проверяет наличие конфликтов обновления и производит соответствующее обновление. |
Пакетное обновление записей в удаленных таблицах
Для производства пакетного обновления на удаленных таблицах, используйте ручные транзации: начиная с TABLEUPDATE( ) и заканчивая процесс либо с SQLCOMMIT( ) или SQLROLLBACK( ).
Для установки соединения для обслуживания ваших транзакций, производимых вручную, вам необходимо использовать CURSORGETPROP( ) на представлении курсора для получения дескриптора соединения, затем установить свойство Transactions в ручной режим.
В приведенном ниже коде, текущая идентификация соединения представления, myview
, хранится в hConn1
. hConn1
используется для установки свойства Transactions в значение "2", которое соответствует ручным транзакциям.
Скопировать код | |
---|---|
hConn1 = CURSORGETPROP("CONNECTHANDLE","myview") ; SQLSETPROP(hConn1,"TRANSACTIONS",2) |
После того, как вы установите соединение для обработки обновлений, вы можете использовать TABLEUPDATE( ) для обработки ваших транзакций.
Если главные таблицы размещены на удаленном сервере, таком как SQL Server, вы можете использовать приведенный ниже код в качестве руководства.
Код | Комментарий |
---|---|
|
Восстановление соединения с сервером и открытие представления. |
|
Установка соединений на представлениях для обработки транзакций вручную. |
|
Обработка обновлений и их конфликтов. |
Обновление одной записи
Если вы обновляете одну строку, вы можете использовать автоматические транзакции. Поскольку каждое предложение, для производства обновления, удаления или вставки, обрабатывается как отдельная транзакция, откат предыдушей транзакции невозможен.
Скопировать код | |
---|---|
USE customerview ONLINE EXCLUSIVE GO TO 3 IF TABLEUPDATE (0, .F. workarea) * conflict handling code ENDIF |
Совет |
---|
Для обнолвения единичной записи в локальной таблице используйте функцию GETNEXTMODIFIED( ). |
Прекращение автономных обновлений
Если вы решили, что желаете удалить автономные данные и вернуть представление назад в подключенное представление, вы можете использовать функцию DROPOFFLINE( ).
Для прекращения автономных обновлений, используйте функцию DROPOFFLINE( ) с именем представления.
Для гарантии проверьте возвращаемые значения. (.T.) указывает что процесс завершился успешно, а (.F.) указывает на то, что представление не было закрыто перед выпуском команды.
Приведенный ниже код сбрасывает все изменения, произведенные в поднаборе данных в представлении myview
. Представление остается частью базы данных, но его текущий поднабор данных сброшен:
Скопировать код | |
---|---|
DROPOFFLINE("myview") |
Вы можете удалить автономные записи, но вы не можете использовать с автономным представлением команды PACK, ZAP или INSERT.