Pregunta

Tengo un programa en Delphi 2010 que utiliza una base de datos JET (MDB) a través de ADO. Me gustaría ser capaz de extraer las definiciones de algunas de las consultas en la base de datos y mostrarlos al usuario. ¿Es esto posible, ya sea a través de SQL, alguna de las interfaces de ADO, o interrogando a la base de datos en sí (que no parecen tener derecho a MSysObjects).

¿Fue útil?

Solución

Parte de esa información está disponible a través de llamadas ADOX. Existe una visión general de la API con algunos ejemplos (por desgracia no en Delphi) en el sitio web de MSDN .

Básicamente lo que tendrá que hacer es es importar la biblioteca de tipos ADOX, y luego usar la envoltura que se genera para acceder a la API subyacente. A partir de ahí su tan simple como navegar por la jerarquía para obtener los datos que necesita.

Se necesitará acceder a la específica Ver objeto, y de ahí obtener la propiedad de comandos.

Otros consejos

A través de DAO, es bastante fácil. Se limita a extraer la propiedad SQL de cada QueryDef. En DAO desde Access, que sería:

  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

No sé cómo traducir eso, pero creo que es el método más simple, una vez que se sienta cómodo con el uso de DAO en lugar de ADOX.

Yo no uso de ADO en absoluto, pero supongo que tiene una colección de puntos de vista y la propiedad SQL trabajaría para consultas SELECT. Sin embargo, si usted está interesado en obtener el SQL para todos QueryDefs guardados, usted también tiene que mirar a las consultas DML, por lo que tendría que mirar los procedimientos almacenados. Tendría que mirar hacia arriba para que la sintaxis, pero estoy bastante seguro de que te mostramos cómo llegar a la información a través de ADO.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top