Excel中的SQL查询给出“未定义的函数名称”错误
我在MS Access中使用MonthName函数编写了一个SQL查询。 在访问它完美的作品。 我将确切的SQL语句复制到我经常用来查询数据库的excel模块中。 当我运行查询时,Excel一直告诉我,MonthName是一个未定义的函数名称。 如果我删除MonthName部分,查询运行良好。
这似乎是我缺less一个引用或东西…现在,我引用Microsoft ActiveX数据对象库6.0。 任何人都可以指向正确的方向吗? 谢谢
strSQL = "SELECT DISTINCT Customers.CustomerName, Employees.EmployeeName, [Policy data revised].EXDT, MonthName(Month([EXDT])) AS expMonth FROM (([Service Team table] INNER JOIN Customers ON [Service Team table].CustID = Customers.CustID) INNER JOIN Employees ON [Service Team table].EmployeeID = Employees.EmployeeID) INNER JOIN [Policy data revised] ON Customers.CustID = [Policy data revised].CustID WHERE ((([Service Team table].RoleExtension)='2. Underwriting Assistant') AND (([Policy data revised].EXDT) BETWEEN #" & minExpDt & "# AND #" & maxExpDt & "#)) ORDER BY [Policy data revised].EXDT ASC;"
MonthName()
函数仅适用于在Access应用程序会话中运行的查询。 请参阅关于Microsoft Jetexpression式服务沙箱模式的 “从属性表中调用以下VBA函数将不起作用或在SQL语句中使用”项目符号点。 在Access应用程序会话中,数据库引擎可以使用expression式服务来使用沙盒function。
由于您不能使用MonthName
,请尝试使用此Format
expression式。
Format([EXDT], 'mmmm') AS expMonth
奇怪的是,我只是在Excel 2010(64位)中尝试了下面的代码,它对我很有帮助:
Sub foo() '' Reference: "Microsoft ActiveX Data Objects 6.0 Library" Dim con As ADODB.Connection, rst As ADODB.Recordset Set con = New ADODB.Connection con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Gord\Desktop\Database1.accdb;" Set rst = New ADODB.Recordset rst.Open "SELECT MonthName(Month([BookingStart])) FROM Payment_tbl", con, adOpenStatic, adLockOptimistic Debug.Print rst(0).Value rst.Close Set rst = Nothing con.Close Set con = Nothing End Sub
编辑
除了HansUp的评论之外,Office 2007和Office 2010之间必然会发生一些变化。我从运行Office 2010的32位计算机上运行了另一个testing,并运行了上面的代码,针对使用这两个文件的Access 2000 .mdb文件。
Provider=Microsoft.ACE.OLEDB.12.0;
…和…
Provider=Microsoft.Jet.OLEDB.4.0;
我也检查下SandBoxMode
registry值…
HKLM\Software\Microsoft\Office\14.0\Access Connectivity Engine\Engines
…它是3
,这是“启用”(ref: 这里 )的值。
- 从PHP导出数据从SQL到Excel
- 生成一个给定开始和结束date的date列表
- 停止date自动格式从C#中从DataGrid导出到Excel时
- 使用xlrd跟踪错误的文件名
- 我可以将Microsoft.Office.Interop.Excel.Chart对象转换为Microsoft.Office.Tools.Excel.Chart对象吗?
- 从C#VSTO中设置Excel PowerView属性
- Excel – 针对单元格范围的文本validation
- 如何在C#中的服务器端创buildExcel兼容的电子表格?
- Application.International xlDecimalSeparator解决方法