Я новичок в powerbuilder, и у меня много проблем с использованием окон данных. Никак не могу разобраться с механизмом вставки. Может ли кто-нибудь объяснить это мне или, по крайней мере, указать мне правильное направление (статья, советы и т. д.)?
Как окно данных powerbuilder выполняет команду вставки
Ответы (2)
SQL, сгенерированный DataWindow, управляется Свойствами обновления (пункт меню Строки / Свойства обновления...). Оттуда вы можете выбрать одну таблицу и установить свойства, которые она будет использовать для генерации SQL. Предложение Where... определяет, какие столбцы и их исходные значения используются в предложении WHERE для операций UPDATE и DELETE. Изменение ключа вступает в силу только тогда, когда вы изменяете (или разрешаете пользователю изменять) столбцы, которые вы определили как ключевые. Обновляемые столбцы — это список того, что будет генерировать SQL (это не влияет на то, что так или иначе допускает пользовательский интерфейс). Ключевые столбцы могут быть первичным ключом (который может быть автоматически заполнен с помощью кнопки первичного ключа, если ваша СУБД поддерживает вызовы для запроса этого из базы данных), но это не обязательно быть. (Есть довольно уникальные случаи, когда вы можете захотеть сделать что-то другое.) Если у вас есть столбец идентификаторов в качестве ключа, вы можете указать его в своем DataWindow, и он получит сгенерированное значение после INSERT.
После этого заполнение данных в DataWindow с помощью InsertRow(), DeleteRow(), SetItem() и, конечно же, предоставление пользователю доступа к пользовательскому интерфейсу будет изменять флаги данных и состояния, которые будут определять SQL, сгенерированный при Update(). называется.
Все это можно изменить во время выполнения с помощью функции Modify(), поэтому вы можете делать такие вещи, как обновление нескольких таблиц с помощью одного DataWindow. Это реализовано в многотабличной службе обновления PowerBuilder Foundation Class, поэтому, если вы когда-нибудь захотите изменить эти значения во время выполнения, это хороший пример кода.
Удачи,
Терри.
@Archangel Вам по-прежнему необходимо указать поле test_id при вставке строки в окно данных, даже после того, как вы указали для нее значение в качестве аргумента извлечения. После того, как вы сделаете свою вставку, убедитесь, что вы делаете setitem для всех значений, которые не допускают нулевых значений.