如何从ms access switch / iIf语句返回表

时间:2015-04-03 07:32:53

标签: vb.net ms-access ms-access-2007 ms-access-2010

我想在ms访问中从iif / switch语句内部执行查询。

像这样:

switch
  (
   LevelNo = 3, (Select * from ReportBalanceSheetEquityMembers),
   LevelNo = 2, (Select  3 as grpMain, 'Equity' AS MainText, 1 as grpSub, 'Equity' AS subText from ReportBalanceSheetEquityMembers),
   (Select * from ReportBalance)
  )

但它总是给我这个错误

Invalid SQL statement;expected "Delete, Insert, Procedure, Select, or Update

此处LevelNo是查询中的参数。

如何解决此问题。任何帮助将不胜感激。 感谢

1 个答案:

答案 0 :(得分:0)

您需要查询中的select语句,也只能返回1个值 如果在查询中使用

select top 1 switch
  (
   [LevelNo] = 3, (Select top 1 [fieldvalue] from ReportBalanceSheetEquityMembers),........

  ) from msysobjects

在模块中使用(使用保存的查询而不是表格)

Private Sub Command6_Click()
inp = InputBox("Enter value for LevelNo")
LevelNo = Val(inp)
Dim sql As String
 sql = Switch(LevelNo = 3, "ReportBalanceSheetEquityMembers", LevelNo = 2, _
 "ReportBalanceSheetEquityMembers", _
 True, "ReportBalance")
'DoCmd.OpenQuery sql
DoCmd.OpenTable sql
End Sub