熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PB編程 >> 正文

在PB中實現數據錄入維持序號連續性的簡單實現[2]

2022-06-13   來源: PB編程 

  在Application畫板中在應用對象的Open事件中輸入如下代碼

  // Profile project

  SQLCADBMS = OR ORACLE

  SQLCALogPass = password

  SQLCAServerName = gxmis

  SQLCALogId = projectdba

  SQLCAAutoCommit = False

  SQLCADBParm =

  //以上為連接數據庫的配置由用戶根據具體設置

  connect using sqlca;

  open(w_autoserial) //打開w_autoserial窗口

  窗口w_autoserial中的Open事件中輸入如下代碼

  dw_settransobject(sqlca)

  dw_retrieve()

  為窗口w_autoserial中的數據窗口dw_聲明一個用戶事件ue_reassign_serial

  用戶事件ue_reassign_serial的說明

  Event Name ue_reassign_serial

  Event ID

  Return (none)

  Argument serial_position long Value

  其中參數serial_position接收數據窗口對象dw_employee中序號字段在Selection List的位置本例中序號字段位置為

  事件腳本如下

  long i

  thissetredraw(false)

  for i= to thisrowcount()

  thisobjectData[iserial_position]=i //重置序號

  next

  thissetredraw(True)

   編寫窗口w_autoserial中的Command Button控件腳本

   cb_insert按鈕的clicked事件代碼

  long ll_currll_newcur

  ll_curr=dw_getrow()

  ll_newcur=dw_insertrow(ll_curr)

  //調用序號維護事件為序號字段在Selection List中的位置

  dw_event trigger ue_reassign_serial(

  dw_setfocus()

  dw_setcolumn(name

  dw_scrolltorow(ll_newcur)

   cb_add按鈕的clicked事件代碼

  long ll_currll_newcur

  ll_newcur=dw_insertrow(

  dw_event trigger ue_reassign_serial(

  dw_setfocus()

  dw_setcolumn(name

  dw_scrolltorow(ll_newcur)

   cb_delete按鈕的clicked事件代碼

  if messagebox(刪除請求肯定要刪除該人員?stopsign!yesno!)= then

  dw_deleterow(

  dw_event trigger ue_reassign_serial(

  end if

   cb_save按鈕的clicked事件代碼

  if dw_update()= then

  commit;

  else

  rollback;

  end if

  本例在Powerbuild 數據庫oracle 上測試通過對於序號上千的表本方法也能應付自如如果程序中序號不為關鍵字或為一些簡單表格可在DataWindow中增加計算字段來實現以上功能計算字段表達式為getrow()

       編輯推薦

       ASP NET開發培訓視頻教程

       Microsoft NET框架程序設計視頻教程

[]  []  


From:http://tw.wingwit.com/Article/program/PB/201311/24613.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.