hur.cn - 华软网

 热门搜索

下拉子数据窗口中的数据自动更新

  作者:未知    来源:网络    更新时间:2019/5/10
下拉子数据窗口中的数据自动更新

----------------------------------------------------------------------------

----
转载  来源http://www.study01job.com/pb  PB文章库 PB论坛 免费电子图书


数据窗口中,字段的编辑气概设置为下拉数据窗口,而且选中允许编辑。在运用进程中

,用户如果输入的内容在编码表中不存留,运用这里介绍的设计方法能够自动更新编码

表,用户运用非常方便。 
设计思绪是: 
  1、封装用户对象,运用Standard Visual,选择DataWindow 
  2、为了便于用户删除输入毛病的内容,在用户对象的Constructor编写程序,向下拉

子数据窗口中插入一个空行。 
  3、在用户对象的ItemChanged事件中,查找用户输入的内容是否存留,如果不存留则

增加新数据并保存。这里举行了假定:编码采取2位String类型的编码。 


程序以下: 
用户对象的Constructor事件: 
DataWindowChild ldwc_temp 
Integer li_index 
String ls_ColName 

This.SetTransObject(SQLCA) 
This.Retrieve( ) 
This.InsertRow(0) 

For li_index = 1 to Integer(This.Object.Datawindow.Column.Count) 
if This.Describe("#" + String(li_index) + ".edit.style") = 'dddw' then 
ls_ColName = This.Describe("#" + String(li_index) + ".name") 
if This.GetChild(ls_ColName,ldwc_temp) <> 1 then continue 
ldwc_temp.InsertRow(0) 
end if 
Next 
用户对象的ItemChanged事件: 
Long ll_FindRow 
String ls_id 
String ls_DataCol 
String ls_DispCol 
String ls_SelCol 
DatawindowChild ldwc_temp 

ls_SelCol = dwo.name 

if This.GetChild(ls_SelCol,ldwc_temp ) <> 1 or & 
This.Describe(ls_SelCol + ".Edit.style") <> 'dddw'then return 

ldwc_temp.SetTransObject(SQLCA) 
ls_DataCol = This.Describe(ls_SelCol + ".dddw.DataColumn") 
ls_DispCol = This.Describe(ls_SelCol + ".dddw.DisplayColumn") 
ll_FindRow = ldwc_temp.Find(ls_DispCol + "='" + data + 

"'",1,ldwc_temp.RowCount()) 
if ll_FindRow > 0 then 
ls_id = ldwc_temp.GetItemString(ll_FindRow,ls_DataCol) 
This.SetItem(Row,ls_SelCol,ls_id) 
else 
ll_FindRow = ldwc_temp.Find(ls_DataCol + "='" + data + 

"'",1,ldwc_temp.RowCount()) 
if ll_FindRow < 1 then 
ll_FindRow = ldwc_temp.InsertRow(ldwc_temp.RowCount()) 
ldwc_temp.SetItem(ll_FindRow,ls_DispCol,Data) 
ls_id = '00' 
if ldwc_temp.RowCount() > 1 then ls_id = ldwc_temp.GetItemString(ll_FindRow - 

1,ls_DataCol) 
ls_id = Right('000' + String(Integer(ls_id) + 1),2) 
ldwc_temp.SetItem(ll_FindRow,ls_DataCol,ls_id) 
end if 
end if 
if ldwc_temp.Update() = 1 then 
commit; 
else 
rollback; 
end if 

 

------华软网友回答------
谢谢
------华软网友回复------
学习
------华软网友回复------
o
------华软网友回复------
  class="deleted_message"> 该回复于2008-11-20 13:22:24被版主删除        
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。