编辑: 过于眷恋 | 2012-12-09 |
(三)参考答案 (编写脚本) 1.在应用student.pbl的open事件中写脚本: SQLCA.DBMS="ODBC"数据库厂商的名称 SQLCA.AutoCommit=False //定义程序是手工提交事务 SQLCA.DBParm="ConnectString=′DSN=newdb′" //DBMS所需的额外信息 /*上述三条可从它处复制、粘贴过来*/ connect;
连接数据源newdb! open(w_main)打开主窗口w_main 2.在主窗口w_main的各个对象中书写脚本: ① 在主窗口w_main的open事件中写脚本: dw_1.settransobject(sqlca) //给数据窗口控件dw_1设置通讯区域sqlca dw_2.settransobject(sqlca) //给数据窗口控件dw_2设置通讯区域sqlca dw_3.settransobject(sqlca) //给数据窗口控件dw_3设置通讯区域sqlca sle_1.setfocus() //将焦点设置到控件sle_1 ② 命令按钮BROWSE的Clicked事件: dw_1.retrieve(从数据库的s表中检索全部数据 ③ 命令按钮INSERT_SC的Clicked事件: dw_2.insertrow(0) //在sc表的尾部插入一行 dw_2.scrolltorow(dw_2.rowcount()) //把指定行设置为当前行 dw_2.setfocus(将焦点设置到控件dw_2 ④ 命令按钮DELETE_SC的Clicked事件: dw_2.deleterow(0) //从数据库的sc表中删除当前行 ⑤ 命令按钮UPDATE_SC的Clicked事件: int g1,g2 g1=integer(sle_1.text)取单行编辑器中的整数 g2=dw_2.GetItemNumber(dw_2.GetRow(),3) //取当前记录的原grade值dw_2.SetItem(dw_2.GetRow(),3,g2+g1) //在原grade值上增加g1值⑥命令按钮OK的Clicked事件: if dw_2.update()=1 then //将修改传送到数据库,成功否 commit;
传送成功,事务提交 else rollback;
传送不成功,事务回退 end if ⑦ 命令按钮QUERY_SNO的Clicked事件: string query dw_3.reset(清除数据窗口控件dw_3中的所有行 query="sno='"+sle_1.text+"'" //设置过滤条件 dw_1.setfilter(query) //修改dw_1的过滤条件 dw_1.filter(过滤数据 dw_1.retrieve(从s表中显示检索到的数据 dw_2.setfilter(query) //修改dw_2的过滤条件 dw_2.filter(过滤数据 dw_2.retrieve(从sc表中显示检索到的数据 sle_1.setfocus(将焦点设置到控件sle_1 ⑧ 命令按钮EXIT的Clicked事件: close(parent)关闭按钮所在的窗口 ⑨ 数据窗口控件dw_1的Clicked事件: dw_2.retrieve(从数据库的sc表中检索全部数据 dw_3.retrieve(从数据库的c表中检索全部数据 ⑩ 数据窗口控件dw_3的Clicked事件: string query dw_1.reset(清除数据窗口控件dw_1中的所有行 dw_2.reset(清除数据窗口控件dw_2中的所有行 dw_3.reset(清除数据窗口控件dw_3中的所有行 query=置过滤条件为空 dw_1.setfilter(query) //修改dw_1的过滤条件 dw_1.filter(过滤数据 dw_2.setfilter(query) //修改dw_2的过滤条件 dw_2.filter(过滤数据 sle_1.text=置单行编辑器为空 sle_1.setfocus(将焦点设置到控件sle_1
(四)程序运行结果 程序编制完成以后,单击PowerBar上的Run按钮就可以运行程序了,程序界面如下所示.
(五)系统中各对象之间的联系示意图