SQL Select with Replace / Case不能在访问表单中工作(语法错误)

时间:2018-05-01 16:08:03

标签: ms-access access-vba

我尝试使用组合框过滤报告。我的记录类型"值以1,2(数字数据类型)保存在表中。但是,我希望组合框中包含' a'' b'而不是1,2。

我已经在"行来源"中尝试了以下SQL语句。在"数据"组合框的选项卡:

SELECT [qryLog].[log_type], CASE WHEN [qryLog].[log_type] = 1 THEN 'a' ELSE 'b' END FROM [qryLog]

这会出现以下错误: "查询表达式中的语法错误(缺少运算符)' CASE WHEN [log_type] = 1那么' a' ELSE' b' END'

我也试过这个:

SELECT [qryLog].[log_type], REPLACE([log_type],1,'a') FROM qryLog;

这根本不做任何事情,下拉选项仍然是1,2(我希望它是' a'和2)。

我的SQL表达式是否有问题,或Access是否允许此类型或操作。我正在使用Access 2013。

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来你走在正确的轨道上,也许你已经解决了它。

但是,您最常遇到的问题是您的组合框在您的查询更改后引用了错误的列。

例如:

对于Combo1,在数据选项卡中,行源类似于:

SELECT [qryLog].[log_type], REPLACE([log_type],1,'a') FROM qryLog;

但是,由于该引用不再是您正在寻找的内容,因此您需要替换的值。你可能正在寻找这个:

SELECT REPLACE([log_type],1,'a') AS [log_type] FROM qryLog;

这显然只会涵盖你的1,但你可能会明白这一点。

<强>更新

SELECT Replace(Replace([qryLog].[log_type],1,'a'),2,'b') AS Whatever FROM qryLog

这假设您使用行源而不是控制源作为填充组合框的方法。下面的屏幕截图:

enter image description here

希望这有帮助。