hur.cn - 华软网

 热门搜索

请教一个数据窗口更新的问题!

  作者:未知    来源:网络    更新时间:2018/3/3
两个数据窗口,dw_1搜索用,每次搜索出的记录用rowcopy()复制到dw_2数据窗口显示,在dw_2窗口修改
记录后在存储的时候不是在原记录上修改而是当作插入一个新的记录更新到数据库里了,不想生成新的记录
要直接在原记录修改该怎么办呀?
------华软网友回答------
为何用rowscopy()??
为何不用rowsmove()???
为何不干脆数据窗口共享????
为何不直接在QQ上联系我?????
我的QQ是:27378211 欢迎垂询
------华软网友回复------
单位不让上qq,我哭
  用rowsmove()后果是一样的
  怎么共享数据窗口,有用吗

------华软网友回复------
基于你这种方法:
设置dw_2的copy过去的行ll_row的状态:
dw_1.rowscopy(.....)
dw_2.setitemstatus(ll_row,0,primary!,datamodified!)
dw_2.setitemstatus(ll_row,0,primary!,notmodified!)
即可,该行即可设置为update的方法.因为rowscopy函数copy的行为new,所以会插入新行.
但是你可以用主从的方式处理,比如主从关键字检索的方式.
------华软网友回复------
就是两个数据窗口共享,我相信你的两个数据窗口是grid和free两种类型,那么你只用注意控制在grid数据窗口的行改变(rowfocuschanged事件)时指定free型数据窗口的行(建议使用ScrollToRow()函数)就行了,至于保存的话,只要你是共享的数据窗口,对哪个进行保存都可以。关于数据共享的函数是ShareData(),具体你查查帮助吧。如果是QQ就可以和你说详细点,这里就不说那么详细了。
------华软网友回复------
给你一段代码参考:
dw_1.SetTransObject(Sqlca)
dw_2.SetTransObject(Sqlca)
dw_2.ShareData(dw_1)
IF dw_1.Retrieve() > 0 THEN
  dw_2.ScrollToRow(1)
  dw_1.ScrollToRow(1)
END IF

分别在dw_1和dw_2的rowfocuschanged事件中写
IF THIS.RowCount() <= 0 OR currentrow <= 0 THEN RETURN
另外一个数据窗口.ScrollToRow(currentrow)

------华软网友回复------
万分感谢
------华软网友回复------
but only 'thank' is not enough.
------华软网友回复------
rowscopy和rowsmove之后dw会把数据状态改成new...的,更新时就当作是插入的数据了,最好用sharedata
------华软网友回复------
为什么不就用一个数据窗口同时实现两种功能?我就是同一个数据窗口实现所有功能,包括检索、修改、新增记录。
------华软网友回复------
ding      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。