以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [发料单号] = 'ZZIL' 不是有效的 Sort 字符串项  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175671)

--  作者:edisontsui
--  发布时间:2022/3/15 8:03:00
--  [发料单号] = 'ZZIL' 不是有效的 Sort 字符串项
If user.name = "开发者" OrElse user.group = "组装"
\'接头预发料汇总
    If CurrentTable.name = "接头预发料" Then

        Dim tbl As Table = Tables("接头预发料")
        Dim cnt As Integer = tbl.DataTable.GetValues("物料编号","出入库单号 is null",Tables("接头预发料").filter).count 
        If cnt > 1 
            messagebox.show("本页面存在 " & cnt & " 个出入库单号为空的物料号, 请筛选掉这些物料后再使用此按钮!")
        Else
            Dim g As New GroupTableBuilder("预发料导出汇总", DataTables("接头预发料"))
            g.Groups.Clear()
            g.Filter = Tables("接头预发料").Filter
            g.Caption = "预发料导出汇总"
            g.Groups.AddDef("出入库单号")
            g.Groups.AddDef("物料编号")
            g.Totals.AddDef("发料数量")
            g.Decimals = 0
            g.Build()
            MainTable = Tables("预发料导出汇总")

        End If
    End If
End If

上述代码是一个按钮里面的代码。在执行时出现如下提示:[发料单号] = \'ZZIL-2203121454-0304\' 不是有效的 Sort 字符串项。”发料单号“虽然是”接头预发料“这个表的一个列,但是上述代码并没有使用到这个列,为什么会出现这个提示呢?

--  作者:edisontsui
--  发布时间:2022/3/15 8:06:00
--  
还出现如下提示:[出入库单号] Is Not Null 不是有效的 Sort 字符串项。
--  作者:有点蓝
--  发布时间:2022/3/15 8:51:00
--  
先看看帮助呗:http://www.foxtable.com/webhelp/topics/2747.htm

语法:

GetValues(ColumnName,Filter,Sort)

ColumnName:列名称,从此列中提取不重复的值。
Filter:     可选参数,指定一个条件表达式,只返回符合此条件的值;请参考表达式的运算符和函数 和 条件表达式
Sort:       可选参数,指定排序列,如果省略,则根据取值列排序,通常无需设置。


第三个参数是排序用的,如果要合并2个条件应该这样

tbl.DataTable.GetValues("物料编号","出入库单号 is null and " & Tables("接头预发料").filter)


--  作者:edisontsui
--  发布时间:2022/3/15 9:06:00
--  
    If CurrentTable.name = "接头预发料" Then
        Dim tbl As Table = Tables("接头预发料")
        Dim cnt As Integer = tbl.DataTable.GetValues("物料编号","出入库单号 is null And " & Tables("接头预发料").filter).count 
        If cnt > 1 
            messagebox.show("本页面存在 " & cnt & " 个出入库单号为空的物料号, 请筛选掉这些物料后再使用此按钮!")
        Else

            Dim g As New GroupTableBuilder("预发料导出汇总", DataTables("接头预发料"))
            g.Groups.Clear()
            g.Filter = Tables("接头预发料").Filter
            g.Caption = "预发料导出汇总"
            g.Groups.AddDef("出入库单号")
            g.Groups.AddDef("物料编号")
            g.Totals.AddDef("发料数量")
            g.Decimals = 0
            g.Build()
            MainTable = Tables("预发料导出汇总")

        End If
    End If

代码改好了。但是在有空的”出入库单号“时,下面的提示不会出现:
        If cnt > 1 
            messagebox.show("本页面存在 " & cnt & " 个出入库单号为空的物料号, 请筛选掉这些物料后再使用此按钮!")
        Else

--  作者:edisontsui
--  发布时间:2022/3/15 9:08:00
--  
没事了。知道原因了。