Foxtable(狐表)用户栏目专家坐堂 → table 定位行的问题


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

主题:table 定位行的问题

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
table 定位行的问题  发帖心情 Post By:2016/10/6 19:58:00 [只看该作者]

导入材料明细,表事件,CurrentChanged中写入:

If Forms("导入材料").Opened AndAlso Forms.ActiveForm.Name = "导入材料"  Then
    Dim dr As Row = Tables("导入材料.导入材料明细").Current
    If dr IsNot Nothing AndAlso dr.IsNull("定额编码")=False Then
        Dim i As Integer= Tables("材料").FindRow("定额编码 = '" & dr("定额编码") & "'")
        If i >= 0 Then
            SystemReady = False
            'Tables("材料").Filter = ""
            Tables("材料").Position = i
            SystemReady = True
        End If
    End If
End If

现在的问题是,table 材料,表,并列窗口中,已经进行了筛选.
我发现在上面的代码不执行。或者说是:找不到,这个:定额编码了。

刚才开始想我在代码里面,把: 'Tables("材料").Filter = ""  , 这一句用上,但是也不起作用。且我在改变:导入材料明细,当前行时,运行变慢,改变一行,要1秒左右。好慢。

我需要怎么处理上面的代码呢?
[此贴子已经被作者于2016/10/6 19:59:31编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110590 积分:562846 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/7 8:55:00 [只看该作者]

If Forms("导入材料").Opened AndAlso Forms.ActiveForm.Name = "导入材料"  Then
    Dim dr As Row = Tables("导入材料.导入材料明细").Current
    If dr IsNot Nothing AndAlso dr.IsNull("定额编码")=False Then
        Tables("材料").Filter = Tables("材料").Filter & " or 定额编码 = '" & dr("定额编码") & "'"
        Dim i As Integer= Tables("材料").FindRow("定额编码 = '" & dr("定额编码") & "'")
        If i >= 0 Then
            SystemReady = False
            Tables("材料").Position = i
            SystemReady = True
        End If
    End If
End If

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/10/7 11:33:00 [只看该作者]

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.7.29.1
错误所在事件:
详细错误信息:
语法错误:“Or”运算符前缺少操作数。

  Tables("材料").Filter = Tables("材料").Filter & " or 定额编码 = '" & dr("定额编码") & "'"
这个代码是什么意思 ?

我现在的问题是, 当table 材料表,进行了filter后,  导入材料明细表,的当前行事件,不能找到这个:定额编码,材料行。无法定位。
[此贴子已经被作者于2016/10/7 11:38:04编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110590 积分:562846 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/7 11:49:00 [只看该作者]

If Forms("导入材料").Opened AndAlso Forms.ActiveForm.Name = "导入材料"  Then
    Dim dr As Row = Tables("导入材料.导入材料明细").Current
    If dr IsNot Nothing AndAlso dr.IsNull("定额编码")=False Then
        Dim filter As String = "定额编码 = '" & dr("定额编码") & "'"
        Dim dr2 As DataRow = DataTables("材料").Find(filter)
        If dr2 Is Nothing Then
            Dim drs As List(of DataRow) = DataTables("材料").AppendLoad(filter, False)
            If drs.Count > 0 Then
                dr2 = drs(0)
            Else
                msgbox("不存在这个定额编码")
                Return
            End If
        End If
        If Tables("材料").Filter > 0 Then
            Tables("材料").Filter = Tables("材料").Filter & " or 定额编码 = '" & dr("定额编码") & "'"
        End If
        Dim i As Integer= Tables("材料").FindRow(dr2)
        If i >= 0 Then
            SystemReady = False
            Tables("材料").Position = i
            SystemReady = True
        End If
    End If
End If

再不行就上例子测试

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/10/7 13:17:00 [只看该作者]

弹错。


'从字符串" Or 定额编码 = '010043' or 定额编码 = '0"到类型"Double"的转换无效.
'输入字符串的格式不正确.
'

      If Tables("材料").Filter > 0 Then
            Tables("材料").Filter = Tables("材料").Filter & " or 定额编码 = '" & dr("定额编码") & "'"

 这个两段代码,怎么理解 ?
[此贴子已经被作者于2016/10/7 13:46:28编辑过]

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/10/7 13:54:00 [只看该作者]

If Forms("导入材料").Opened AndAlso Forms.ActiveForm.Name = "导入材料"  Then
    Tables("材料").Filter = ""
    Dim dr As Row = Tables("导入材料.导入材料明细").Current
    If dr IsNot Nothing AndAlso dr.IsNull("定额编码")=False Then
        Dim i As Integer= Tables("材料").FindRow("定额编码 = '" & dr("定额编码") & "'")
        If i >= 0 Then
            SystemReady = False
            Tables("材料").Position = i
            SystemReady = True
        End If
    End If
End If

上面的代码,能满足我的需要。

只是上面的代码,在每一次:导入材料明细,表的当前行切换时,都 会把TABLE材料表,FILTER一遍。
这样,切换,导入材料明细表,当前行时,反应时间较长:1秒左右,影响,使用速度。
需要怎么改一下,这段代码呢?

我想的是,有没有一个代码。判断,TBALE表,是否作了:筛选。判断它?
[此贴子已经被作者于2016/10/7 13:54:47编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110590 积分:562846 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/7 14:21:00 [只看该作者]

If Tables("材料").Filter > 0 Then

改为

If Tables("材料").Filter > ""  Then '可以用这个判断是否有筛选条件

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/10/7 17:14:00 [只看该作者]

OK 了。
If Tables("材料").Filter > ""  Then '可以用这个判断是否有筛选条件
这个判断加上,可以的。


Tables("材料").Filter = Tables("材料").Filter & " or 定额编码 = '" & dr("定额编码") & "'"

我始终没有看懂这个代码,是怎么个意思 ?这个代码没错吗?

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110590 积分:562846 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/7 17:18:00 [只看该作者]

如果Filter不包含这个定额编码,就包含进来,这样就可以把指定的定额编码筛选出来

 回到顶部