Извлечь определение запроса из базы данных JET через ADO - PullRequest
0 голосов
/ 14 октября 2010

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

Ответы [ 2 ]

1 голос
/ 14 октября 2010

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

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

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

0 голосов
/ 16 октября 2010

Через DAO это довольно просто.Вы просто извлекаете свойство SQL каждого QueryDef.В DAO из Access это будет выглядеть следующим образом:

  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 будет работать для запросов SELECT.Однако, если вы заинтересованы в получении SQL-кода для всех сохраненных QueryDef, вам также нужно посмотреть на запросы DML, поэтому вам нужно взглянуть на хранимые процедуры.Я должен был бы найти синтаксис для этого, но я почти уверен, что именно так вы и получите информацию через ADO.

...