我在查询中定义了以下字段,允许我根据一个名为WAMI(employee.WAMI)的数字字段进行排序。
SortBy:IIf([forms]![frmMain]![opgSortBy] =“1”, val([employee]。[wami]),IIf([forms]![frmMain] ![opgSortBy] = “2”,[作用]。[employeeNumber],IIF([表格]![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([表格]![frmMain]![opgSortBy] =“4”,[员工]。[全名]))))AS SortBy FROM Employee INNER JOIN角色ON Employee.WAMI = Role.WAMI WHERE(((Role.Region)= GetRegion()))
答案 0 :(得分:1)
在再次考虑解决方案之后,它让我觉得我可能需要围绕整个IIF语句进行数据类型转换,这就是我所做的并且它成功运行,这很奇怪因为我读过的解决方案如我原来的问题所强调的那样,提到在IIF声明中进行转换。我也用过CDbl而不是val。所以有效的完整语句现在是CDbl(IIF语句)