为了使动态创建的数据窗口可以被更新,需要在使用dw_control.update()之后进行几个相关的设置:
首先需要设置可以更新的列:
dw_control.Object.<columnname>.update
或
dw_control.Modify("<ColumnName>.Update=Yes")
这个操作与在Update属性对话框中的"Updateeable Columns"列表框中选择哪些更可以被更新相类似。在这里,我们假设所有可以被更新的更都是同一张表中的字段,对于要更新的每一个列都应该使用上面的语句。
下一步,应该设置更新是采用的主键:
dw_control.Object.<ColumnName>.key = "yes"
这个操作与在Update属性对话框中的"Unique Key Columns"列表框中选择哪些更可以被更新相类似。
然后,需要设置WHERE子句的更新方式:
dw_1.Object.DataWindow.Table.UpdateWhere = 0 or 1 or 2
这对应于设置key, key & updateable, key & modified。注意,在这里,我们只是对一个表进行了设置,如果需要更新多个表,你需要分别对每个表进行这些设置。.
这样,就可以调用dw_control.Update()
另外,还可以用下面的语句来设置:Update Key In Place:
Dw_control.object.DataWindow.Table. UpdateKeyInPlace = "yes" or "no"
这与在Update属性对话框中Key MOdification下的两个单选按钮作用相同。它主要在更新关键字之后,对PB生成SQL语句进行控制(使用update或insert)。
Yes - 当关键字被修改时,使用UPDATE进行更新。
No - 当关键字被修改时,使用DELETE 与 INSERT 语句。
下面是一个简单的例子,它用于更新PB Demo DB数据库中的DEpartment表。它使dept_name列可以被更新,同时在更新时仅根据关键字dept_id进行更新。
dw_1.Object.DataWindow.Table.UpdateWhere = 0
dw_1.object.dept_name.update = "yes"
dw_1.Object.dept_id.key = "yes"
dw_1.update()