发新话题
打印

数据录入窗口的公用程序

数据录入窗口的公用程序

数据录入窗口的公用程序
----------------------------------------------------------------------------
----
转载   http://www.study01job.com/pb/book/  PB论坛  PB文章库 PB资料下载 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

TOP

不错啊,楼主,做PB的版主吧
换个头像,看见广告就眼红,直接封ID。

TOP

好资料,感谢提供。

TOP

发新话题