【发布时间】:2020-02-05 20:20:45
【问题描述】:
Microsoft 文档指出:
CREATE VIEW view [(field1[, field2[, ...]])] AS selectstatement
并列出了一些规定。我正在尝试使用ADODB 使用CREATE VIEW 语句创建联合查询。我可以在 Access (2013) 中运行并保存联合本身(它显示它已保存为带有两个小互锁圆圈图标的联合查询)。但是 Microsoft.ACE.OLEDB.12.0 引擎抱怨Unions 不允许在子查询中使用,或者在VIEWS 中只允许简单的SELECT 查询。我需要使用DAO 还是有不同的语法?我的创建视图语句是:
uString = "CREATE VIEW vwSpendingTotals (Spending, Name) as SELECT Spending, Name FROM " & _
" (SELECT Sum( tblA.Amount) as Spending, 'Auto' as Name from tblGeneral_Ledger gl " & _
" inner join tblAccount_AUTO as tblA on gl.Trans_ID = tblA.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1) Union " & _
" SELECT Sum( tblH.Amount) as Spending, 'Household' as Name from tblGeneral_Ledger gl " & _
" inner join tblAccount_Household as tblH on gl.Trans_ID = tblH.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1) union " & _
" SELECT Sum( tblL.Amount) as Spending, 'Living' as Name from tblGeneral_Ledger gl " & _
" inner join tblAccount_Living as tblL on gl.Trans_ID = tblL.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1) union " & _
" SELECT Sum( tblM.Amount) as Spending, 'Medical' as Name from tblGeneral_Ledger gl " & _
" inner join tblAccount_Medical as tblM on gl.Trans_ID = tblM.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1) union " & _
" SELECT Sum( tblP.Amount) as Spending, 'Personal' as Name from tblGeneral_Ledger gl " & _
" inner join tblAccount_Personal as tblP on gl.Trans_ID = tblP.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1) union " & _
" SELECT Sum( tblU.Amount) as Spending, 'Utilities' as Name from tblGeneral_Ledger gl " & _
" inner join tblAccount_Utilities as tblU on gl.Trans_ID = tblU.Trans_ID " & _
" where gl.Debit_Credit < 0 AND Trans_Date > DateSerial(Year(Now()),1,1)) order by Name"
objConnection.Execute uString
objConnection 已在脚本中较早地实例化。
是否应该更新 Microsoft 文档以反映 Jet 12 引擎返回的错误,还是我在找错树?
提前致谢, 哈罗德
【问题讨论】:
-
格式(
)?制作子查询视图以规避错误(子查询中不允许联合)! -
这是一个值得追求的可能性
-
是的,这似乎是唯一可行的方法。我可以使用 ucanaccess 4.0 库和 Access Query 设计 SQL 窗口针对 Access 数据库构建和执行非常复杂的联合和相当嵌套的连接,但是在创建视图方面,Access 是一个真正的弱点。嵌套连接必须分解成一系列相互依赖的视图感谢指导