数据录入窗口有很多公用程序,这里进行简单总结,然后读者可以考虑使用继承、用户
对象等方式将这些公用内容封装起来,以便以后的开发中重用,从而提高软件的开发效
率。公用程序总结以下几点:
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 作者:
Nothing 时间: 2006-12-26 17:02