PowerBuilder5中有关DataWindow的几个问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 10:41:25
首先请原谅我的无知(略知C#,但PB基本不通),其次请原谅我的落后(还在PB5),然后请原谅我的懒惰(懒得查书了),最后请原谅我的啰嗦(问题比较多)……呵呵呵

1.PB5中如何用自定义的SQL语句填充一个DataWindow,比如这样的语句select 'flag',name from users //其中flag为Bool类型,不在数据库中,由用户自行填充,应该选哪种DataWindow模式呢
说白了,我就是想在DataWindow中添加一个与数据库中数据无关的Bool列,该怎么办

2.在一系列的操作之后,单击界面中的“提交”按钮,这时如何判断DataWindow中的每一行数据是新增的或者是被修改过了(甚至是删除了的某一行的RowIndex)

3.在dw.update()发生之时有什么验证函数吗,比如说更新之前我可以弹框询问是否确认,如果确认就更新数据,否则不更新?

以上内容最好能在“伟大”的PB5上实现,无比感激,如完美解决前两问追加积分

从字面上理解cur_row应该是当前行的意思,不过从你上面的代码上看你并没有定义它。如果你的数据窗口对应的是单个表,要想实现你所说的功能实际不需要那么多代码。主要是对数据窗口对象进行设置。
首先,进入你已经做好的数据窗口对象dw_shelf中。单击菜单rows->update properties 进入修改更新属性对话框。在对话框的左上角选中allow updates ,右上方的table to update中选择你要更新的表,下方有两个列表控件。左边的是你想要更新的列,右边选择的是能识别你要更新的数据行的列(如果是单一表的话直接选择主键就好)。然后,在工具栏中单击tableorder按钮。数据窗口对象中的列空间右上角会出现红色背景的数字(用法和窗口中的tableorder 属性一样)把需要更新的列改成非零就可以(注意修改的数字不要重复),再次单击tableorder按钮。保存。
在W_SHELF窗口中新建一个数据窗口控件三个按钮控件,再单击数据窗口控件DATAOBJECT属性右边的按钮。在弹出的对话框中选择刚刚建好的数据窗口对象。
在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()提交到数据库
除此外还需在应用对象的打开事件中编写连接数据库的代码(可以在数据库画板中复制),具体情况请参照你的参考书。
以上过程需要编写的代码非常少,主要工作都是在设置属性。如果学过C语言的话pb的代码很好学,初学pb建议你在参考书中先找些简单的例子来做,主要学习如何进行属性设置。其实,不用代码也可以实现很多功能。

PB5很久没用了,大概是这样的:
1.普通DW即可,用一个参数当做列;
2。通过DW的缓冲来判断;
3.DW提交之前还有事