现在已经知道怎么动态设置数据窗口的可更新列,及表了。但还不知道怎么在代码中动态设置 update properties 中的其他属性,如 Allow Updates,Where Clause for Update/Delete ,Key Modification。请问这些属性如何在PB中用代码动态设置
数据窗口是PB最重要的技术之一,通过它,可以很方便的对数据库的数据进行增、删、改。刚刚学习PB的人,有没有考虑过,通常一个数据窗口是由Select语句构建的,它可以检索数据,我们很容易理解,可删除数据、修改数据也是靠寥寥几行代码就可以实现.
其实,这全是依靠数据窗口的“Update Properties”,对数据的删除、修改控制全在这里,见下图。
上面是一个数据窗口的Update Properties窗口,它记录了如下信息:
1:数据是否只读(Allow Updates)
如果把该选项关闭,那么在程序中的任何删、改操作都无法生效。
2:哪些列参与本次删、改操作(Where Clause for Update/Delete)
Key Columns:主键列
Key and Updateable Columns:主键列以及用户设置的允许修改的列(窗口左下部设置哪些列允许被修改),这是通常使用最广泛的方式。
Key and Modified Columns:主键列以及真正发生变化的列(如果一张表有200个字段,仅仅一、两个字段变化了,千万不能用这种方式)。
3:如何完全本次删、改操作(Key Modification)
Use Delete then Insert:如果是修改数据,先把该键值的数据删除除,再插入进来,再提交数据。用户感觉上数据仅仅是被修改过了。
Use Update:通过Update语句修改数据。
这样,就知道了数据窗口的工作原理。
如果删除数据,找到主键列,然后用delete 语句删除相应数据;
如果是修改数据,仍然找主键列,然后根据用户的设置判断是先删再插,还是直接修改,若是直接修改则再根据用户的设置对相应的列进行修改,这样,有时在程序里明明对n多列修改了数值,如果在此处设置不正确,也会得到不正确的结果。
其实,如果是单机版程序,数据库在本地,怎么设置都无大碍,但如果是C/S模式,每个属性就要与并发性以及数据库的“锁”有关系了。
pb 数据窗口 在代码中动态设置 row\/update properties
刚刚学习PB的人,有没有考虑过,通常一个数据窗口是由Select语句构建的,它可以检索数据,我们很容易理解,可删除数据、修改数据也是靠寥寥几行代码就可以实现.其实,这全是依靠数据窗口的“Update Properties”,对数据的删除、修改控制全在这里,见下图。上面是一个数据窗口的Update Properties窗口,它记录...
pb中怎么在数据窗口中设置update属性阿
打开datawindow的数据窗口对象(datachild),选择菜单rows\\\\update properties...在弹出的窗口中勾上allow updates,在 table to update 中选择要update的表,在where clause for update\/delete 中选第二个,在key modification中选第一个,在updateable columns中选择要update的列,在unigue key column(s...
pb数据窗口中怎么做增删改查操作?
\\x0d\\x0a首先搭好框架,即一个窗口,上面有个数据窗口控件,设置好数据窗口的保存属性。\\x0d\\x0a增加:使用一个按钮,点击代码dw_1.insertrow(0),表示在末尾增加一行。\\x0d\\x0a删:dw_1.deleterow(0),删除当前行。\\x0d\\x0a改:直接在界面上修改,不需要代码控制,最后都在保存里面统...
pb编程中update如何使用
第一种是数据窗口的update,这种需要设置数据窗口的更新列和更新的使用的键值,一般是主键。直接是dw_control.update()返回值是integer 如果返回1,表示更新成功。返回-1表示更新失败。如果数据库的autocommit是false,那么还需要commit。if dw_control.update() = 1 then commit;else rollback;end if 第...
怎样在数据窗口里直接更改数据库的数据(pb)
你在菜单rows下选update properties 设置即可
PB 数据窗口 添加数据等代码
cb_1:long ll_row ll_row=dw_1.insertrow(0)dw_1.scrolltorow(ll_row)cb_2:long ll_row ll_row=dw_1.getrow() \/\/得到当前行 dw_1.deleterow(ll_row)cb_3:dw_1.retrieve()cb_4:if dw_1.update()=1 then commit;messagebox('信息','保存成功')else rollback;messagebox('信息'...
PowerBuilder编程问题
在W_SHELF窗口OPEN事件中 填写如下代码 dw_1.settransobject(sqlca)(设置全局事务对象)dw_1.retrieve()(查询)在三个按钮控件中分别填写:1.dw_1.insertrow(0)(在数据窗口尾部插入行)2.dw_1.update()(保存修改)3.dw_1.deleterow(dw_1.getrow())删除选中行 dw_1.update()提交到数据库 ...
PB 怎么动态(用代码)改变数据窗口的属性(例如窗体的字体大小,字体颜色...
修改数据窗口背景颜色 dw_1.object.datawindow.color = rgb(255,0,0) \/\/此颜色为红色 另外也可以使用dw_1.modify("datawindow.color = '255'") \/\/不过这个后边的颜色需要使用long型数字来控制,不能使用rgb函数。字体颜色:这个需要指定字段了。因为字体都是字段当中的,要每个字段来指定颜色。dw_...
pb怎么保存数据窗口中添加的数据,保存到数据库表中!请给详细的思路!和...
if dw_1.update() >o then\/\/更新保存数据; 1 -成功;-1-失败 commit;\/\/提交数据 else rollback;\/\/回滚数据 end if 同时要注意 在数据窗口对象控件 即在 dw_1所用到的数据窗口对象编辑画板中的update properties 设置正常(即更新属性). 具体查看 打开rows选单-update properties-Allow updates挑...
为什么我的PB程序运行时保存不了,直接在数据窗口输入数据也保存不了...
数据窗口无法更新?设置数据表的更新属性 rows->update properties-> allow updates 选上