Извлечь определение запроса из базы данных JET через ADO

StackOverflow https://stackoverflow.com/questions/3929483

Вопрос

У меня есть программа в Delphi 2010, которая использует базу данных Jet (MDB) через ADO. Я хотел бы иметь возможность извлечь определения некоторых запросов в базе данных и отобразить их пользователю. Возможно ли это либо через SQL, некоторый интерфейс ADO, либо путем опроса самой базы данных (я, похоже, не имею права на MSISObjects).

Это было полезно?

Решение

Некоторые из этой информации доступны с помощью Adox Calls. Существует обзор API с некоторыми примерами (к сожалению, не в Delphi) на Веб -сайт MSDN.

По сути, вы захотите сделать, это импортировать библиотеку типа Adox, а затем использовать обертку, созданную для вас, чтобы получить доступ к базовому API. Оттуда это так же просто, как навигация по иерархии, чтобы получить необходимые данные.

Вам нужно будет получить доступ к конкретному Посмотреть объект, и оттуда получите свойство команды.

Другие советы

Через Дао это довольно легко. Вы просто извлекаете свойство SQL каждого запроса. В Дао из доступа это было бы:

  Dim db As DAO.Database
  Dim qdf As DAO.QueryDef

  Set db = DBEngine.OpenDatabase("[path/name of database]")
  For Each qdf In db
    Debug.Print qdf.SQL
  Next qdf
  Set qdf = Nothing
  db.Close
  Set db = Nothing

Я не знаю, как это перевести, но я думаю, что это самый простой метод, когда вам удобно использовать DAO вместо Adox.

Я вообще не использую Ado, но я предполагаю, что у него есть коллекция представлений, и свойство SQL будет работать для избранных запросов. Однако, если вы заинтересованы в получении SQL для всех сохраненных QueryDefs, вам также нужно будет посмотреть на запросы DML, поэтому вам придется посмотреть на хранимые процедуры. Я должен был бы посмотреть синтаксис для этого, но я уверен, что именно так вы получите информацию через ADO.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top