0

我在 Delphi 2010 中有一个程序,它通过 ADO 使用 JET (mdb) 数据库。我希望能够提取数据库中一些查询的定义并将它们显示给用户。这是否可以通过 SQL、某些 ADO 接口或通过询问数据库本身(我似乎没有 MSysObjects 的权限)来实现。

4

2 回答 2

1

其中一些信息可通过 ADOX 调用获得。在MSDN 网站上有一些示例(不幸的是不在 Delphi 中)的 api 概述。

基本上,您要做的是导入 ADOX 类型库,然后使用为您生成的包装器来访问底层 API。从那里它就像导航层次结构以获取您需要的数据一样简单。

您将需要访问特定的View 对象,并从那里获取命令属性。

于 2010-10-14T16:10:58.490 回答
0

通过 DAO,这很容易。您只需提取每个 QueryDef 的 SQL 属性。在 Access 内部的 DAO 中,这将是:

  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 查询。但是,如果您对获取所有已保存 QueryDef 的 SQL 感兴趣,您还需要查看 DML 查询,因此您必须查看存储过程。我将不得不为此查找语法,但我很确定这就是您通过 ADO 获取信息的方式。

于 2010-10-16T17:20:32.490 回答