为什么 ms-access sql Pass Through 在 VBA 中不起作用
Why does an ms-access sql Pass Through not work in VBA
我目前正在尝试在 Access 2016 中使用 VBA 编写一个 select 通过查询。如果我通过按钮传递使用手动选项并手动分配 dsn 以下语句有效。
SELECT top 1 dat_Kunden.Kunden_Status FROM dat_Kunden
我想通过的sql正在改变所以我想创建一个VBA函数来执行它。
这是我当前执行给定 sql 语句的函数
Function CreateSPT(strSQL As String)
Dim qdf As DAO.QueryDef, rs As DAO.Recordset
Set qdf = CurrentDb.CreateQueryDef("")
qdf.Connect = "ODBC;Driver=SQL Server;SERVER=xxx;DATABASE=yyy;UID=zzz" 'in the code this is the real data
qdf.SQL = strSQL
qdf.ReturnsRecords = True
Set rs = qdf.OpenRecordset()
If Not (rs.BOF And rs.EOF) Then rs.MoveFirst
Do Until rs.EOF
Debug.Print rs.Fields(0)
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set qdf = Nothing
End Function
这确实有效。
Sub test_sql()
SQL = "SELECT CONVERT( date, GETDATE() ) AS qryTest"
CreateSPT (SQL)
End Sub
此通过手动传递起作用的语句不起作用
Sub test_sql2()
SQL = "SELECT top 1 dat_Kunden.Kunden_Status FROM dat_Kunden AS qryTest"
CreateSPT (SQL)
End Sub
错误代码是 运行-time error '3146': ODBC -- 调用在此行失败:
Set rs = qdf.OpenRecordset()
我希望你知道我的错误在哪里......感谢你们所有人,从你们那里学到了很多东西!
如果您提供别名,请使用:
SQL = "SELECT Top 1 qryTest.Kunden_Status FROM dat_Kunden AS qryTest"
或忽略它:
SQL = "SELECT Top 1 Kunden_Status FROM dat_Kunden AS qryTest"
我目前正在尝试在 Access 2016 中使用 VBA 编写一个 select 通过查询。如果我通过按钮传递使用手动选项并手动分配 dsn 以下语句有效。
SELECT top 1 dat_Kunden.Kunden_Status FROM dat_Kunden
我想通过的sql正在改变所以我想创建一个VBA函数来执行它。
这是我当前执行给定 sql 语句的函数
Function CreateSPT(strSQL As String)
Dim qdf As DAO.QueryDef, rs As DAO.Recordset
Set qdf = CurrentDb.CreateQueryDef("")
qdf.Connect = "ODBC;Driver=SQL Server;SERVER=xxx;DATABASE=yyy;UID=zzz" 'in the code this is the real data
qdf.SQL = strSQL
qdf.ReturnsRecords = True
Set rs = qdf.OpenRecordset()
If Not (rs.BOF And rs.EOF) Then rs.MoveFirst
Do Until rs.EOF
Debug.Print rs.Fields(0)
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set qdf = Nothing
End Function
这确实有效。
Sub test_sql()
SQL = "SELECT CONVERT( date, GETDATE() ) AS qryTest"
CreateSPT (SQL)
End Sub
此通过手动传递起作用的语句不起作用
Sub test_sql2()
SQL = "SELECT top 1 dat_Kunden.Kunden_Status FROM dat_Kunden AS qryTest"
CreateSPT (SQL)
End Sub
错误代码是 运行-time error '3146': ODBC -- 调用在此行失败:
Set rs = qdf.OpenRecordset()
我希望你知道我的错误在哪里......感谢你们所有人,从你们那里学到了很多东西!
如果您提供别名,请使用:
SQL = "SELECT Top 1 qryTest.Kunden_Status FROM dat_Kunden AS qryTest"
或忽略它:
SQL = "SELECT Top 1 Kunden_Status FROM dat_Kunden AS qryTest"