RowsCopy+DeleteRow 和 RowsMove后重点DW原数据又出来了
================操作方法1==============
Long ll_CurrentRow
ll_CurrentRow = dw_1.GetRow()
dw_1.RowsCopy( ll_CurrentRow, ll_CurrentRow, Primary!, dw_2, dw_2.RowCount() + 1, Primary!)
dw_1.DeleteRow( ll_CurrentRow )
================操作方法2==============
Long ll_CurrentRow
ll_CurrentRow = dw_1.GetRow()
dw_1.RowsMove(ll_CurrentRow, ll_CurrentRow, Primary!, dw_2, dw_2.RowCount() + 1, Primary!)
目的:
想把DW1里的一条记录转移到DW2里,但操作完后。再点DW1选取其它记录时,移出的记录又出来了。但只会对第一次被移动的记录发生问题。后面再移动别的记录就没事。
我看帮助里说Buffer manipulation and query mode A DataWindow cannot be in query mode when you call the RowsMove method.
问题:
1、不明白是不是我的DW在这个状态下,请问如何查这个状态?
2、还是我的程序哪里不对,请大家指正
3、或这就是PB的BUG(我的系统为PB8.0.3 build 9704 操作系统: 中文2k pro sp3 另一个中文2k pro sp4 )
问题点数:100、回复次数:9Top
1 楼wangxichen() 喜之郎 : )回复于 2004-09-03 17:39:45 得分 20
操作方法2改为:
Long ll_CurrentRow
ll_CurrentRow = dw_1.GetRow()
dw_1.RowsMove(ll_CurrentRow, ll_CurrentRow, Primary!, dw_2, dw_2.RowCount() + 1, Delete!)
就是将最后的参数Primary!改掉Top
2 楼xuexy1980_xxy1980(勇豹)回复于 2004-09-03 17:43:04 得分 40
其实两种方法都是可以归结为以下操作:
dw_1.RowsCopy( ll_CurrentRow, ll_CurrentRow, Primary!, dw_2, dw_2.RowCount() + 1, Primary!)
dw_1.RowsMove( ll_CurrentRow, ll_CurrentRow, Primary!, dw_1,1, Delete!)
你试一下吧!
Top
3 楼samchung(酸菜)回复于 2004-09-03 18:01:30 得分 0
wangxichen(喜之郎) 可能你没看清我的目的
我的目的是:想把DW1里的一条记录转移到DW2里,因为我可能还要把记录从DW2再转回。而非把DW1的记录转到DW2的删除缓冲里
xuexy1980_xxy1980(勇豹)
你的方法我试了。还是存在第一次转出记录后点DW1该记录又出现的问题。之后再操作就没事了
难道是PB的问题吗?xuexy1980_xxy1980你的PB是什么版本和补丁?Top
4 楼xuexy1980_xxy1980(勇豹)回复于 2004-09-03 18:56:18 得分 0
我的PB6.5 你能把你的错误报告信息说明白吗? 我来看一下,应该不会出现问题!Top
5 楼klbt(快乐白兔)回复于 2004-09-03 19:20:39 得分 20
点DW1选取其它记录时,移出的记录又出来了
=========================================
你的rowfocuschanged事件clicked事件有无编码?Top
6 楼wjlforever()回复于 2004-09-03 19:41:49 得分 20
设置一个变量
int li_flag
if li_flag= 1
是对第一次被移动的记录发生问题
elseif li_flag= 0
不是对第一次被移动的记录发生问题
Long ll_CurrentRow
ll_CurrentRow = dw_1.GetRow()
dw_1.RowsCopy( ll_CurrentRow, ll_CurrentRow, Primary!, dw_2, dw_2.RowCount() + 1, Primary!)
dw_1.DeleteRow( ll_CurrentRow )
li_flag = 1
end if
判断判断
Top
7 楼samchung(酸菜)回复于 2004-09-03 21:52:06 得分 0
dw_1.clicked 事件
===================
IF row > 0 THEN
This.SelectRow(0, FALSE)
This.SelectRow(row, TRUE)
pb_MoveOut.Enabled = True
END IF
pb_moveout.clicked 事件
====================
Long ll_CurrentRow
ll_CurrentRow = dw_1.GetRow()
dw_1.RowsCopy( ll_CurrentRow, ll_CurrentRow, Primary!, dw_2, dw_2.RowCount() + 1, Primary!)
dw_1.DeleteRow( ll_CurrentRow )
pb_MoveOut.Enabled = False
没有rowfocuschanged。也没有其它的事件了
哎,找了半天也没找到个可以上传的免费空间。回头我传个flash上去你们看一下吧
Top
8 楼samchung(酸菜)回复于 2004-09-04 13:12:49 得分 0
下面是问题的Flash还有窗体导出的srw文件
http://yingjia.hostrocket.com/sam/index.html
谢谢小苏帮我上传Top
9 楼samchung(酸菜)回复于 2004-09-06 14:48:50 得分 0
问题找到了。原因是那个Text 是使用modify 触发的。当打开一个新窗口取回数据再触发后。
那个pb_MoveOut.Enabled = False后再点当前窗口的任意点会再次触发这个事件。如果不打新窗口不会有这样的问题。看来是PB的BUG
加了一个实例变量在modify里来判断Text是否真的被改了,防止了多次触发问题。
谢谢大家参与
Top




