社区
DataWindow
帖子详情
多表更新的问题
csg2000
2003-02-11 09:21:40
请问如何修改字段的TAB ORDER,使其不为0,完成多表更新
...全文
63
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
数据库开发 维护 性能调优 备份还原 各种复杂
问题
的解决方案
总之,数据库开发与维护是一项综合性强的工作,涉及到多方面的技术和知识。持续学习和实践,掌握这些关键技能,将有助于构建高效、可靠的数据库系统。这份压缩包中的“数据库资料”很可能包含了丰富的案例、教程和...
phpbb论坛2.03-2.04升级文件
- 完成数据库和表结构的
更新
,这可能涉及添加、修改或删除某些字段,以适应新版本的功能需求。 -
更新
配置文件,可能涉及到核心设置的调整,如URL路径、邮件设置等。 - 验证升级成功,测试新功能和界面是否正常,...
oracle11g官方中文帮助文档 高清完整版
- SQL语言:用于查询、插入、
更新
和删除数据库中的数据。 - PL/SQL:Oracle的编程语言扩展,支持过程化编程,常用于编写存储过程和触发器。 4. **安全性** - 用户与角色:管理数据库访问权限,通过用户和角色...
SQL中的
多表
更新
及注意事项
SQL中的
多表
更新
及注意事项在数据库开发中经常遇到要进行
多表
更新
的情况,
多表
更新
可以通过游标循环来实现,但是要写好多语句,不太方便,因此很多人用
多表
更新
来实现,但是如果在使用中不注意语法的严谨性,就会...
多线程
更新
一张表的同一个字段的并发
问题
解决思路
因为
更新
时每次只可能有一个线程
更新
到数据,等到另外一个线程再去
更新
数据的时候版本号已经+1了,所以会
更新
失败,重新获取版本号再走
更新
流程,这样就解决了多线程并发
更新
被覆盖的
问题
。 而且乐观锁机制避免了长...
DataWindow
611
社区成员
20,469
社区内容
发帖
与我相关
我的任务
DataWindow
PowerBuilder DataWindow
复制链接
扫一扫
分享
社区描述
PowerBuilder DataWindow
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章