Domanda

Ho un programma in Delphi 2010, che utilizza un database JET (mdb) tramite ADO. Mi piacerebbe essere in grado di estrarre le definizioni di alcune delle domande rivolte nel database e li visualizza all'utente. Questo è possibile sia tramite SQL, un po 'l'interfaccia ADO, oppure interrogando il database stesso (non mi sembra di avere diritti di MSysObjects).

È stato utile?

Soluzione

Alcune di queste informazioni sono disponibili tramite chiamate ADOX. C'è una panoramica delle API con alcuni esempi (purtroppo non in Delphi) sulla sito web MSDN .

In sostanza ciò che si vuole fare è quello di è quello di importare la libreria dei tipi ADOX, e quindi utilizzare il wrapper che viene generato per l'accesso all'API sottostante. Da lì la sua semplice come navigare la gerarchia per ottenere i dati necessari.

Sarà necessario accedere alla specifica View oggetto , e da lì ottenere la proprietà di comando.

Altri suggerimenti

Via DAO, è abbastanza facile. Basta estrarre la proprietà SQL di ogni QueryDef. In DAO dentro Access, che sarebbe:

  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

Non so come tradurre questo, ma penso che sia il metodo più semplice una volta che sei a tuo agio con l'utilizzo di DAO, invece di ADOX.

Non faccio uso di ADO a tutti, ma sto cercando di indovinare che ha una collezione di punti di vista e la proprietà SQL avrebbe lavorato per le query SELECT. Tuttavia, se siete interessati a ottenere lo SQL per tutti QueryDefs salvate, si sarebbe anche bisogno di guardare le query DML, in modo che ci si deve guardare le stored procedure. Avrei dovuto cercare la sintassi per questo, ma sono abbastanza certo che come si otterrebbe alle informazioni tramite ADO.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top