欢迎来到天天文库
浏览记录
ID:40562046
大小:41.00 KB
页数:4页
时间:2019-08-04
《PB数据窗口的多表更新》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、PB数据窗口的多表更新原理分析:数据窗口数据源来自两个或两个以上的表,相当于多个表连接建立的一个视图,对于这种数据窗口,PB默认是不能修改的。当然我们可以通过设置它的Update属性,数据窗口的UpdateProperties用来设置数据窗口是否可Update、可Update的表、可Update列等,但不能同时设置两个表可更新;所以当修改它的数据项时,我们不能简单地用dw_1.update()来更新table,我们可以在程序中设置数据窗口可更新的一个表A(及其可更新列),其他表为不可更新,更新完表A后,再
2、设置另一表B为可更新,表A设置为不可更新,依次类推。解决示例:我们以PowerBuilder7自带的ASA6数据库为例:1、新建一个数据窗口d_grid_dep_emp,它的Select语句为SELECTdepartment.dept_id,department.dept_name,employee.emp_id,employee.emp_fname,employee.emp_lnameFROMdepartment,employeewhereemployee.dept_id=department.dept
3、_id2、设置数据窗口d_grid_dep_emp的属性,将列的taborder改为非0值;并点击菜单Rows――UpdateProperties,设置此数据窗口AllowUpdates,TabletoUpdate设为department,UpdateableColumns为department.dept_id,department.dept_name。3、在窗口中“更新”数据窗口按钮的clicked事件编写脚本:longll_rtn//修改Department表(Department表在第2步已设置为可
4、更新)ll_rtn=dw_1.update(true,false)ifll_rtn=1then//关闭对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=emplo
5、yee)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()IFll_rtn=1THENCOMMITUSINGSQLCA;dw_1.retrieve()messagebox(提示
6、信息,更新成功!)ELSEROLLBACKUSINGSQLCA;MessageBox(提示信息,更新失败!)ENDIF//重设修改标志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
7、(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)ELSEROLLBACKUSINGSQLCA;MessageBox(提示信息,更新失败!)ENDIF这样就完成了对两个表的更新。当然我们可以将上面功能编成一个函数,在需要时调用。PowerBuilder的数据窗口对象是其特
8、有的智能对象,其封装性好、功能强大、表现形式丰富多样,为此,许多MIS开发人员对PowerBuilder推崇备至,将其视为首选开发工具。一般情况下,一个数据窗口只能更新一个数据库表,但在MIS开发过程中,我们经常遇到这种情况:一个数据窗口中由两个或更多个数据库表作为数据源,并需要对其进行录入或修改,如何给出多表更新的通用解决方案就成为MIS开发人员不容回避的问题。笔者在某管理信息系统的开发过程中,尝试了几种双表更新的解决方法,
此文档下载收益归作者所有