Перед обновлением данных в представлении убедитесь в том, что опции и свойства, которые управляют обновлениями для представлений установлены так, чтобы представление могло быть обновлено. Для получения более подробной информации смотрите описание Подготовка к обновлению представлений.

NoteЗамечание

Свойства представления, устанавливаемые по умолчанию могут предоставить все необходимую информацию для того, чтобы ваше представлено могло быть обновлено.

Опции представления, требуемые для его обновления

  • Откройте представление в дизайнере View Designer и щелкните по закладке Update Criteria.

    На закладке Update Criteria отображаются установки обновления для представления.

Для получения более подробной информации смотрите описания Как: редактировать представления and Закладка Update Criteria дизайнера представлений.

Для установки свойств, необходимых для обновления представления

  1. Используйте команду DISPLAY DATABASE для отображения текущих установок свойств представления.

  2. Используйте функцию DBSETPROP( ) для изменения установок свойств представления.

Для получения более подробной информации смотрите описание функции DBSETPROP( ).

Когда вы используете DBSETPROP( ) для установки свойств представления до его использования, то внесенные изменения сохраняются в базе данных и автоматически используются каждый раз, когда вы активизируете представление. После того, как представление станет активным, вы можете использовать функцию CURSORSETPROP( ) для изменения установок свойств активного представления. Однако, изменения значения свойств, которые вы сделали на активном представлении с помощью функции CURSORSETPROP( ) не сохраняются, когда вы закрываете представление.

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

  1. Установите свойство Tables в имя таблицы (по крайней мере - одной).

    Например, если у вас имеется представление основанное на таблице customer и носящее имя cust_view, вы могли бы установить имя таблицы с помощью приведенной ниже функции:

      CopyCode imageСкопировать код
    DBSETPROP('cust_view','View','Tables','customer')
    NoteСовет

    Если таблица появилась в качестве определителя в свойстве UpdateName но не включена в список, используемый по умолчанию для свойства Tables, то таблица просто может не иметь указанного поля первичного ключа. Сделайте таблицу обновляемой с помощью добавления поля, которое вы будете считать ключевым полем в списке свойства KeyField и, затем добавьте таблицу в список свойства Tables.

  2. Установите свойстве KeyField в одно или более локальных имен полей Visual FoxPro, которые вместе будут определять уникальный ключ для обновления таблицы.

    Используя тот же пример, вы могли бы сделать cust_id ключевым полем, используя приведенный ниже код:

      CopyCode imageСкопировать код
    DBSETPROP('cust_view.cust_id','Field','KeyField',.T.)
    Caution noteCaution

    Убедитесь, что ключевое поле (поля), которые вы указали для определения уникального ключа, имеется как в таблице, которую вы желаете обновить, так и в представлении.

  3. Разметьте поля представления в их поля его базовой таблицы с помощью свойства UpdateName. Это свойство чрезвычайно полезно, когда ваше представление основано на объединении двух таблиц с обшим именем поля, или когда поля имеют псевдоимена в представлении. Для обновления желаемой базовой таблицы, вы размечаете имя поля представления Visual FoxPro в базовое имя поля и имя таблицы.

      CopyCode imageСкопировать код
    DBSETPROP('cust_view.cust_id','Field','UpdateName',;
             'customer.cust_id')
    NoteСовет

    Для избежания случая описания полей-синонимов в вашем представлении, вы можете определить имена поля в предложении SQL, которое вы используете для построения представления. Затем используйте свойство UpdateName представления Visual FoxPro для разметки каждого определенного поля в корректное имя поля и базовой таблицы.

  4. Укажите диапазон полей, которые вы желаете обновить в свойстве Updatable. Вы должны указать только те поля, которые, кроме того, определены в свойстве UpdateName.

      CopyCode imageСкопировать код
    DBSETPROP('cust_view.cust_id','Field','Updatable', .T.)
  5. Установите свойствл SendUpdates в True (.T.). Свойство SendUpdates управляет тем, что будут ли создаваться и посылаться обновления в таблицы и поля, которые могут быть обновлены.

      CopyCode imageСкопировать код
    DBSETPROP('cust_view','View','SendUpdates',.T.)

Смотрите также