Foxtable(狐表)用户栏目专家坐堂 → [求助]剪切粘贴发现错误


  共有17509人关注过本帖树形打印复制链接

主题:[求助]剪切粘贴发现错误

帅哥哟,离线,有人找我吗?
kylin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3034 积分:19208 威望:0 精华:2 注册:2008/9/1 7:50:00
[求助]剪切粘贴发现错误  发帖心情 Post By:2009/5/15 16:06:00 [只看该作者]

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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47476 积分:251245 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/15 16:10:00 [只看该作者]

没有测试出来,做个例子让我测试测试看看。

图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3034 积分:19208 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3034 积分:19208 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/5/16 20:37:00 [只看该作者]

kylin兄:
1、我刚又测试了你的代码,如果是筛选 kh 列后,再开始 录入 或 复制粘贴 都没有问题;
2、我的代码没问题呀,可以 回到 刚才录入行的位置啊~

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

 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3034 积分:19208 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47476 积分:251245 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/18 7:52:00 [只看该作者]

这不是Bug,不要在DataColChanged事件中设置Filter属性。

 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3034 积分:19208 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2009/5/18 8:17:00 [只看该作者]

以下是引用狐狸爸爸在2009-5-18 7:52:00的发言:
这不是Bug,不要在DataColChanged事件中设置Filter属性。

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


 回到顶部