社区
DataWindow
帖子详情
多表更新的问题
csg2000
2003-02-11 09:21:40
请问如何修改字段的TAB ORDER,使其不为0,完成多表更新
...全文
67
2
打赏
收藏
多表更新的问题
请问如何修改字段的TAB ORDER,使其不为0,完成多表更新
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ice2water
2003-02-11
打赏
举报
回复
怎样实现数据窗口的多表更新?
例如:数据窗口数据源来自两个表,当修改该数据窗口数据项时,怎样做到两个table都能更新呢?数据窗口数据源来自两个或两个以上的表,相当于多个表连接建立的一个视图,对于这种数据窗口,PB默认是不能修改的。
当然我们可以通过设置它的Update 属性,数据窗口的Update Properties用来设置数据窗口是否可Update、可Update的表、可Update列等,但不能同时设置两个表可更新;所以当修改它的数据项时,不能简单地用dw_1.update()来更新table,我们可以在程序中设置数据窗口可更新的一个表A(及其可更新列),其他表为不可更新,更新完表A后,再设置另一表B为可更新,表A设置为不可更新,依次类推。
以PowerBuilder7自带的EAS Demo DB V3数据库为例:
1、新建一个数据窗口d_grid_dep_emp,它的Select语句为
SELECT department.dept_id,
department.dept_name,
employee.emp_id,
employee.emp_fname,
employee.emp_lname
FROM department, employee
WHERE employee.dept_id = department.dept_id
2、设置数据窗口d_grid_dep_emp的属性,将列的taborder改为非0值;并点击菜单Rows-->Update Properties,设置此数据窗口Allow Updates,Table to Update设为department,Updateable Columns为department.dept_id,department.dept_name。
3、在窗口中更新数据窗口按钮的clicked事件编写脚本:
long ll_rtn
// 修改Department表(Department表在第2步已设置为可更新)
ll_rtn = dw_1.update(true, false)
If ll_rtn = 1 then
//关闭对Department表的修改
dw_1.Modify("department_dept_name.Update = 'No'")
dw_1.Modify("department_dept_id.Update = 'No'")
dw_1.Modify("department_dept_id.Key = 'No'")
//设置Employee表成为新的可修改表
dw_1.Modify("DataWindow.Table.UpdateTable = 'employee'")
dw_1.Modify("employee_emp_id.Update = 'Yes'")
dw_1.Modify("employee_emp_fname.Update = 'Yes'")
dw_1.Modify("employee_emp_lname.Update = 'Yes'")
dw_1.Modify("employee_emp_id.Key = 'Yes'")
//修改Employee表
ll_rtn = dw_1.Update()
IF ll_rtn = 1 THEN
COMMIT USING SQLCA;
dw_1.retrieve()
messagebox('提示信息','更新成功!')
ELSE
ROLLBACK USING SQLCA;
MessageBox('提示信息', '更新失败!')
END IF
//重置修改标志
dw_1.Modify("department_dept_name.Update = 'Yes'")
dw_1.Modify("department_dept_id.Update = 'Yes'")
dw_1.Modify("department_dept_id.Key = 'Yes'")
dw_1.Modify("DataWindow.Table.UpdateTable = 'department'")
dw_1.Modify("employee_emp_id.Update = 'No'")
dw_1.Modify("employee_emp_fname.Update = 'No'")
dw_1.Modify("employee_emp_lname.Update = 'No'")
dw_1.Modify("employee_emp_id.Key = 'No'")
ELSE
ROLLBACK USING SQLCA;
MessageBox('提示信息', '更新失败!')
END IF
我们还可以将以上功能作成一个函数,在必要的时候调用即可。
数据窗口中列的edit属性为下拉数据窗口,请教如何取得该列的display data
dw_1.describe("evaluate('lookupdisplay(列名)',行号)")
or
string ls_data
ls_data=dw_1.describe.object.editname.text
ice2water
2003-02-11
打赏
举报
回复
在脚本中设置tab order的值
dw_1.SetTabOrder("cwzbljs", 10)
or
dw_1.Object.cwzbljs.Tabsequence = 10
数据库开发 维护 性能调优 备份还原 各种复杂
问题
的解决方案
数据库开发 维护 性能调优 备份还原 各种复杂
问题
的解决方案 这时对CSDN上出现的很多
问题
的解决方案的总结 免费分享 大家多多下载哦
phpbb论坛2.03-2.04升级文件
phpbb论坛中文版2.03修正版升级到2.04的升级文件
oracle11g官方中文帮助文档 高清完整版
oracle11g官方中文帮助文档,压缩文件。
PowerDesigner15.1汉化包
PowerDesigner15.1完整汉化包,欢迎下载汉化。 有
问题
到我的博客留言反映:http://www.iitshare.com 或者获取最新的汉化包
关于前后端
多表
联合逻辑计算
更新
问题
为什么要写这篇文章
问题
来源:网友
问题
求助 相信你也会在工作中遇到各种
问题
,不管你是用什么语言开发,其实都大同小异。 今天说的这位网友也是如此,他遇到到
问题
是关于
多表
联合计算
更新
数量的
问题
。
问题
的描述:
多表
计算UPDATE 表1:a_id, a_sum(总成本), a_peo(总人数), 表2:b_id, b_money(人均成本/日)a_id 表3:c_id,c_num(个人的总天数,每个人不一样) 这个c_num是通过表内两个日期相减而得到的字段。a_id 想求这个总成本,因为每个人的时间不一.
DataWindow
611
社区成员
20,469
社区内容
发帖
与我相关
我的任务
DataWindow
PowerBuilder DataWindow
复制链接
扫一扫
分享
社区描述
PowerBuilder DataWindow
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章