数据录入窗口的通用写法[转载]

数据录入窗口的通用写法[转载]

2010-08-01 22:02:22| 分类: PB学习资料 | 标签:录入 窗口 通用 程序 |举报 |字号 订阅

数据录入窗口有很多公用程序,这里进行简单总结,然后读者可以考虑使用继承、用户对象等方式将这些公用内容封装起来,以便以后的开发中重用,从而提高软件的开发效率。公用程序总结以下几点:
1、插入
通常提供一个命令按钮,在按钮的Clicked事件中编写如下脚本:
dw_1.ScrollToRow(dw_1.InsertRow(0))
2、删除
通常提供一个命令按钮,在按钮的Clicked事件中编写如下脚本:
integer li_flag
long ll_CurRow

ll_CurRow = dw_1.GetRow(0)
if ll_CurRow < 1 then return

li_Flag = MessageBox('提示','确实要删除当前数据吗?',Question!,YesNo!,2)
if li_Flag = 1 then
dw_1.DeleteRow(ll_CurRow)
end if
3、提供一个关闭按钮,在该按钮的Clicked事件上编写如下脚本:
Close(parent)
4、提供一个保存按钮,在该按钮的Clicked事件上编写如下脚本:
Long ll_Rows

ll_Rows = dw_1.ModifiedCount() + dw_1.DeletedCount()
if ll_Rows < 1 then return
if dw_1.Update() = 1 then
commit;
MessageBox('提示','数据保存成功。保存了' + String(ll_Rows) + '条记录。')
else
rollback;
MessageBox('提示','数据错误,请仔细检查。')
end if
5、在数据窗口控件dw_1的Constructor事件中编写如下脚本:
This.SetTransObject(SQLCA)
在DBError事件中编写如下脚本:
return 1
在ItemError事件中编写如下脚本:
return 1
在LoseFocus事件中编写如下脚本:
This.AcceptText()
6、在窗口的CloseQuery事件中编写如下脚本:
integer li_flag
long ll_Rows
dw_1.AcceptText()
ll_Rows = dw_1.ModifiedCount() + dw_1.DeletedCount()
if ll_Rows > 0 then
li_flag = MessageBox('提示','数据已经修改,是否保存?',&
Question!,YesNoCancel!,1)
choose case li_flag
case 1 //保存
if dw_1.Update() = 1 then
commit;
return 0
else
if MessageBox('提示','数据错误,不能保存。是否继'+&
'续关闭?',Question!,YesNo!,2) = 1 then
return 0
else
rollback;
return 1
end if
end if
case 2 //不保存
rollback;
return 0
case 3 //取消
return 1
end choose
else
return 0
end if

你可能感兴趣的:(数据库,脚本,PowerBuilder)