Я не уверен, что вы спрашиваете.
Вы можете использовать DCount (), чтобы определить количество строк, возвращаемых запросом SELECT.
Debug.Print DCount("*","YourQueryName")
Если вместо этогоПроблема заключается в определении того, существует ли таблица, вы можете проверить имя таблицы в коллекции TableDefs.Этот оператор вернет имя таблицы, если она существует, или выдаст ошибку, которую можно отследить, если она не существует.
Debug.Print CurrentDb.TableDefs("YourTableName").Name
Если вы хотите избежать перехвата ошибки, вы можете использовать цикл For ... Nextвыполнить итерацию по коллекции TableDefs и выйти из цикла For, если вы найдете имя.
В качестве альтернативы вы можете использовать запрос SELECT для поиска имени таблицы в системной таблице MSysObjects.
SELECT MSysObjects.[Name], MSysObjects.[Type]
FROM MSysObjects
WHERE
(((MSysObjects.[Name])="YourTableName")
AND ((MSysObjects.[Type])=1));
Этот запрос будет проверять имя таблицы как собственную таблицу доступа в текущей базе данных.Если у вас может быть связанная таблица из другой базы данных Access (Type = 4) или источника данных ODBC (Type = 6) с этим именем, измените предложение WHERE.
SELECT MSysObjects.[Name], MSysObjects.[Type]
FROM MSysObjects
WHERE
(((MSysObjects.[Name])="YourTableName")
AND ((MSysObjects.[Type]) In (1, 4, 6)));
Если вы запрашиваете MSysObjects, сделайтеуверен, что вы не измените какие-либо значения.Также я слышал, что некоторые пользователи Access 2007 сталкиваются с ошибками прав на чтение для MSysObjects.Вы можете избежать первой проблемы, используя DCount () вместо запроса.
Debug.Print DCount("*","MSysObjects","[Name]='YourTableName' AND [Type] In (1, 4, 6)")