Есть ли способ в MS Access с использованием VBA определить, является ли связанная таблица ODB C SQL View или Table - PullRequest
1 голос
/ 28 мая 2020

У меня есть база данных Access с сотнями ODB C таблиц, связанных с парой внутренних SQL серверов. Некоторые из этих связанных таблиц относятся к SQL таблицам, а некоторые - к SQL представлениям. Есть ли способ определить с помощью VBA, который относится к таблице SQL, а какой - к SQL View?

Спасибо.

1 Ответ

2 голосов
/ 28 мая 2020

Вы можете запросить эту информацию с сервера SQL.

SELECT TABLE_TYPE
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA + '.' + TABLE_NAME = ?

Реализуйте это в VBA:

Dim db As DAO.Database
Set db = CurrentDb
Dim td As DAO.TableDef
Set td = db.TableDefs("SomeLinkedTable")
Dim qd As DAO.QueryDef
Set qd = db.CreateQueryDef("")
qd.Connect = td.Connect
qd.SQL = "SELECT TABLE_TYPE " & _
    "FROM INFORMATION_SCHEMA.TABLES " & _
    "WHERE TABLE_SCHEMA + '.' + TABLE_NAME = '" & Replace(td.SourceTableName, "'", "''") & "'"
Dim rs As DAO.Recordset
Set rs = qd.OpenRecordset
Debug.Print rs!TABLE_TYPE.Value 'Returns VIEW or BASE TABLE depending on the type
...