Перед обновлением данных в представлении убедитесь в том, что опции и свойства, которые управляют обновлениями для представлений установлены так, чтобы представление могло быть обновлено. Для получения более подробной информации смотрите описание Подготовка к обновлению представлений.
Замечание |
---|
Свойства представления, устанавливаемые по умолчанию могут предоставить все необходимую информацию для того, чтобы ваше представлено могло быть обновлено. |
Опции представления, требуемые для его обновления
-
Откройте представление в дизайнере View Designer и щелкните по закладке Update Criteria.
На закладке Update Criteria отображаются установки обновления для представления.
Для получения более подробной информации смотрите описания Как: редактировать представления and Закладка Update Criteria дизайнера представлений.
Для установки свойств, необходимых для обновления представления
-
Используйте команду DISPLAY DATABASE для отображения текущих установок свойств представления.
-
Используйте функцию DBSETPROP( ) для изменения установок свойств представления.
Для получения более подробной информации смотрите описание функции DBSETPROP( ).
Когда вы используете DBSETPROP( ) для установки свойств представления до его использования, то внесенные изменения сохраняются в базе данных и автоматически используются каждый раз, когда вы активизируете представление. После того, как представление станет активным, вы можете использовать функцию CURSORSETPROP( ) для изменения установок свойств активного представления. Однако, изменения значения свойств, которые вы сделали на активном представлении с помощью функции CURSORSETPROP( ) не сохраняются, когда вы закрываете представление.
Приведенный ниже пример перечисляет шаги, которым вы должны следовать для указания пяти свойств, необходимых для обновления представления, программным способом:
-
Установите свойство Tables в имя таблицы (по крайней мере - одной).
Например, если у вас имеется представление основанное на таблице
customer
и носящее имяcust_view
, вы могли бы установить имя таблицы с помощью приведенной ниже функции:Скопировать код DBSETPROP('cust_view','View','Tables','customer')
Совет Если таблица появилась в качестве определителя в свойстве UpdateName но не включена в список, используемый по умолчанию для свойства Tables, то таблица просто может не иметь указанного поля первичного ключа. Сделайте таблицу обновляемой с помощью добавления поля, которое вы будете считать ключевым полем в списке свойства KeyField и, затем добавьте таблицу в список свойства Tables.
-
Установите свойстве KeyField в одно или более локальных имен полей Visual FoxPro, которые вместе будут определять уникальный ключ для обновления таблицы.
Используя тот же пример, вы могли бы сделать
cust_id
ключевым полем, используя приведенный ниже код:Скопировать код DBSETPROP('cust_view.cust_id','Field','KeyField',.T.)
Caution Убедитесь, что ключевое поле (поля), которые вы указали для определения уникального ключа, имеется как в таблице, которую вы желаете обновить, так и в представлении.
-
Разметьте поля представления в их поля его базовой таблицы с помощью свойства UpdateName. Это свойство чрезвычайно полезно, когда ваше представление основано на объединении двух таблиц с обшим именем поля, или когда поля имеют псевдоимена в представлении. Для обновления желаемой базовой таблицы, вы размечаете имя поля представления Visual FoxPro в базовое имя поля и имя таблицы.
Скопировать код DBSETPROP('cust_view.cust_id','Field','UpdateName',; 'customer.cust_id')
Совет Для избежания случая описания полей-синонимов в вашем представлении, вы можете определить имена поля в предложении SQL, которое вы используете для построения представления. Затем используйте свойство UpdateName представления Visual FoxPro для разметки каждого определенного поля в корректное имя поля и базовой таблицы.
-
Укажите диапазон полей, которые вы желаете обновить в свойстве Updatable. Вы должны указать только те поля, которые, кроме того, определены в свойстве UpdateName.
Скопировать код DBSETPROP('cust_view.cust_id','Field','Updatable', .T.)
-
Установите свойствл SendUpdates в True (.T.). Свойство SendUpdates управляет тем, что будут ли создаваться и посылаться обновления в таблицы и поля, которые могут быть обновлены.
Скопировать код DBSETPROP('cust_view','View','SendUpdates',.T.)