首页 文章

用作排序字段的计算查询字段按字符串值排序,而不是按数字排序

提问于
浏览
0

我在查询中定义了以下字段,以允许我基于一个名为WAMI(employee.WAMI)的数字字段进行排序 .

SortBy:IIf([forms]![frmMain]![opgSortBy] = "1", val([employee].[wami]) ,IIf([forms]![frmMain]![opgSortBy] = "2",[role] . [employeeNumber],IIf([forms]! [frmMain]![opgSortBy] = "3",[员工] . [姓],IIf([表格]![frmMain]![opgSortBy] = "4",[员工] . [全名]))))

上面介绍了一个选项组,并将其排序顺序基于所选的内容 . 在选择1的情况下,排序顺序是WAMI,它是表中的数字字段 .

我遇到的问题是,当操作员选择1时,排序顺序基于从左到右的文本值,所以我得到类似的东西

111111 2 333

代替

2 333 111111

问题似乎很明显,查询字段的返回值是数据类型字符串,所以我虽然修复只是简单地使用employee.wami语句周围的VAL函数,但这没有区别 .

下面是实际的SQL语句而不是查询字段值 .


SELECT Employee.WAMI,Role.EmployeeNumber,Employee.FullName,Employee.SMS,Employee.DeletedRecord,IIf([forms]![frmMain]![opgSortBy] =“1”,Val([employee] . [wami]), IIF([表格]![frmMain]![opgSortBy] = “2”,[作用] . [employeeNumber],IIF([表格]![frmMain]![opgSortBy] = “3”,[雇员] . [姓],IIf([forms]![frmMain]![opgSortBy] =“4”,[employee] . [fullname]))))AS SortBy FROM Employee INNER JOIN Role ON Employee.WAMI = Role.WAMI WHERE((( Role.Region)= GetRegion()))

订购IIf([表格]![frmMain]![opgSortBy] =“1”,Val([员工] . [wami]),IIf([表格]![frmMain]![opgSortBy] =“2”, [作用] . [employeeNumber],IIF([表格]![frmMain]![opgSortBy] = “3”,[雇员] . [姓],IIF([表格]![frmMain]![opgSortBy] =“4 ”,[雇员] [全名])))) .

1 回答

  • 1

    在再次考虑解决方案之后,它让我觉得我可能需要围绕整个IIF语句进行数据类型转换,这就是我所做的并且它成功运行,这很奇怪,因为我读过的解决方案提到了在我原来的问题中强调的在IIF声明中进行转换 . 我也用过CDbl而不是val . 所以有效的完整声明现在是CDbl(IIF声明)

相关问题