以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]剪切粘贴发现错误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=2799)

--  作者:kylin
--  发布时间:2009/5/15 16:06:00
--  [求助]剪切粘贴发现错误

数据是内部表
发现剪切约20行后跳下4行粘贴发现错误


图片点击可在新窗口打开查看此主题相关图片如下:spximage.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2009-5-17 11:18:31编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/5/15 16:10:00
--  
没有测试出来,做个例子让我测试测试看看。

图片点击可在新窗口打开查看
--  作者:kylin
--  发布时间:2009/5/16 8:02:00
--  
应该是DataColChanged事件设置筛选代码发生了问题,如果不设置就不会发生问题
If e.DataCol.Name = "kh" Then
    If e.NewValue isnot nothing Then
        dim p as integer = Tables("ysmx").Position
        Tables("ysmx").Filter = "[kh]= \'"& e.DataRow("kh")  &"\'or [kh] Is Null"
        Tables("ysmx").Position=p
    End If
End If
例子如下:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar

[此贴子已经被作者于2009-5-16 8:05:29编辑过]

--  作者:mr725
--  发布时间:2009/5/16 14:51:00
--  
1、Tables("ysmx").Position=p  晒选后p值可能隐藏了,Tables("ysmx").Position也许找不到原来的p值了,用output.show(Tables("ysmx").Position )测试两次的p值就知道了。
用这个来确定位置:不知道是不是你要确定刚录入行的位置?
Dim t As Table = Tables("ysmx")
For i As Integer = 0 To t.Rows.Count -1
    If t.Rows(i)("kh") = "" Then
        Tables("ysmx").Position = i-1
        Exit For
    End If
Next


2、既然:If e.NewValue isnot nothing Then 就没有筛选中的 or [kh] Is Null 奇怪的是,既是如此筛选的结果还是会有空值的行和kh]= \'"& e.DataRow("kh")  &"\'的行并存的情况,也就是说fox可以同时筛选出两种条件的结果。
3、虽然提示错误了(见1楼)但是筛选并没有受影响。感觉foxtable有bug
4、剪切、粘贴空值没有任何反映。粘贴这个(前后无空格) kh]= \'"& e.DataR  ,不会有反映。而粘贴这个:Filter = "[kh]= 或其他的代码部分,则会彻底崩溃!~????
班门弄斧了。。。。呵呵 

2  是我理解错了? 要保留空值的行,即便输入用~  
[此贴子已经被作者于2009-5-16 15:41:20编辑过]

--  作者:kylin
--  发布时间:2009/5/16 17:52:00
--  
以下是引用mr725在2009-5-16 14:51:00的发言:
1、Tables("ysmx").Position=p  晒选后p值可能隐藏了,Tables("ysmx").Position也许找不到原来的p值了,用output.show(Tables("ysmx").Position )测试两次的p值就知道了。
用这个来确定位置:不知道是不是你要确定刚录入行的位置?
Dim t As Table = Tables("ysmx")
For i As Integer = 0 To t.Rows.Count -1
    If t.Rows(i)("kh") = "" Then
        Tables("ysmx").Position = i-1
        Exit For
    End If
Next


2、既然:If e.NewValue isnot nothing Then 就没有筛选中的 or [kh] Is Null 奇怪的是,既是如此筛选的结果还是会有空值的行和kh]= \'"& e.DataRow("kh")  &"\'的行并存的情况,也就是说fox可以同时筛选出两种条件的结果。
3、虽然提示错误了(见1楼)但是筛选并没有受影响。感觉foxtable有bug
4、剪切、粘贴空值没有任何反映。粘贴这个(前后无空格) kh]= \'"& e.DataR  ,不会有反映。而粘贴这个:Filter = "[kh]= 或其他的代码部分,则会彻底崩溃!~????
班门弄斧了。。。。呵呵 

2  是我理解错了? 要保留空值的行,即便输入用~  
[此贴子已经被作者于2009-5-16 15:41:20编辑过]

谢谢你
第一点 是要求回到刚才录入行的位置,所以您的代码不对,不过没有关系的,可以容后仔细改进


--  作者:mr725
--  发布时间:2009/5/16 20:37:00
--  
kylin兄:
1、我刚又测试了你的代码,如果是筛选 kh 列后,再开始 录入 或 复制粘贴 都没有问题;
2、我的代码没问题呀,可以 回到 刚才录入行的位置啊~

图片点击可在新窗口打开查看此主题相关图片如下:hw1.gif
图片点击可在新窗口打开查看
[此贴子已经被作者于2009-5-16 21:19:42编辑过]

--  作者:kylin
--  发布时间:2009/5/17 11:09:00
--  
以下是引用mr725在2009-5-16 20:37:00的发言:
kylin兄:
1、我刚又测试了你的代码,如果是筛选 kh 列后,再开始 录入 或 复制粘贴 都没有问题;
2、我的代码没问题呀,可以 回到 刚才录入行的位置啊~


[此贴子已经被作者于2009-5-16 21:19:42编辑过]

惭愧,我看错了代码
谢谢老兄!
不过1楼的现象依然存在

[此贴子已经被作者于2009-5-17 11:20:03编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/5/18 7:52:00
--  
这不是Bug,不要在DataColChanged事件中设置Filter属性。

--  作者:kylin
--  发布时间:2009/5/18 8:17:00
--  
以下是引用狐狸爸爸在2009-5-18 7:52:00的发言:
这不是Bug,不要在DataColChanged事件中设置Filter属性。

不是Bug的话,那就是这个原因了