Что не так в этом примере? Он разрывается там, где указано, даже когда указанное имя tbl является прекрасно работающей связанной таблицей.Ошибка при открытии qd.openrecordset
Sub showLinked(tbl As String)
'tbl is the name of an existing local linked table (SQL Server)'
Dim db As DAO.Database, rs As DAO.Recordset
Dim qd As QueryDef
Set db = CurrentDb
With db.TableDefs(tbl)
Debug.Print .Name, .SourceTableName, .Connect
Set qd = db.CreateQueryDef("")
qd.Connect = .Connect
qd.SQL = "select 1 xxx from " & .SourceTableName
qd.ReturnsRecords = True
Set rs = qd.OpenRecordset() 'breaks here: error 3146 - "ODBC--call failed"
Debug.Print "test connection:", rs.Fields(0)
End With
End Sub
Что выбирает 1 xxx из «& .SourceTableName»? Является ли это корректным оператором SELECT в SQL Server? – HansUp
Да, неверный SQL. Попробуйте с помощью '' select top 1 * from "& .SourceTableName' – Gustav
@HansUp: он возвращает набор записей с 1 полем с именем' xxx' со значением 1 - работает в SSMS. @Gustav: попробовал свое предложение, ту же ошибку. –