|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
[access] - salvare una query a run-time
Buona sera a tutti.
Avrei la necessità di aprire una query in visualizzazione foglio dati ma non so a priori come sarà costituita visto che i parametri vengono inseriti tramite form. So che per aprire la query si utilizza questa sintassi DoCmd.OpenQuery "nome_query", acViewNormal, acReadOnly però l'oggetto, nel mio caso la query, deve essere già esistente. Supponendo, per semplificare al massimo la cosa, che la mia query sia strSQL = "select * from tabella" come faccio da questa query a salvare a run-time la query, aprirla e in seguito distruggerla? Ciao e grazie. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Comunque, partiamo dal presupposto che tu voglia fare il tutto da una Form VBA direttamente in Access ( se parli di DoCmd immagino sia proprio così )... Entra nel tuo DB, apri l'editor VBA e da Strumenti / Riferimenti controlla che sia attivo il Rif. alle librerie "Microsoft DAO 3.6 Object Library" ( 3.6 se usi Office 2003, versione a parte sono quelle lì ). Intanto dai un'occhiata al codice VBA per la creazione/eliminazione di una Stored Query generica... Poi vediamo... Puoi creare una nuova maschera in Access, usare un semplice pulsante ed associare al Click la routine "PROVA_DAO"... : Codice:
Public Sub PROVA_DAO()
Dim MioDB As DAO.Database
Dim MiaQuery As DAO.QueryDef
Dim strSQL As String
strSQL = "SELECT * FROM Nome_Tabella"
Dim DBPath As String
DBPath = CurrentDb.Name
Set MioDB = DBEngine.OpenDatabase(DBPath)
Dim q As DAO.QueryDef
For Each q In MioDB.QueryDefs
MsgBox q.Name
If q.Name = "Nome_Nuova_Query" Then
MioDB.QueryDefs.Delete (q.Name)
End If
Next
Set MiaQuery = MioDB.CreateQueryDef("Nome_Nuova_Query", strSQL)
MioDB.Close
End Sub
|
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jun 2011
Messaggi: 1
|
salvare query in access da vb6
saluto tutti
e' la prima volta che mi collego a questo forum io ho risolto cosi' la creazione e salvataggio a run-time di una query nel DB di Access Public Sub £CreaQuery(ByVal §Nome As String) Set £Dbs = OpenDatabase(......................) £Dbs.QueryDefs.Refresh On Error Resume Next Set qryDef = £Dbs.QueryDefs(§Nome) If (3265 = Err) Then Set qryDef = £Dbs.CreateQueryDef(§Nome) £Dbs.QueryDefs.Refresh Err = 0 End If On Error GoTo 0 qryDef.SQL = §strSql qryDef.Close End Sub la cosa funziona, a parte il fatto che la query creata diventa visibile ad access dopo qualche secondo e anche al vb6 non diventa immediatamente disponibile; me ne sono reso conto perche' ricevo l' errore di tabella/query non trovata; controllare nome e riprovare; se pero' faccio il debug e poi F8 per rieseguire l' operazione l' errore scompare; la mia domanda e': e' possibile che il VB6 aspetti fin tanto che la query sia disponibile e come si fa a saperlo; io ho provato con l' istruzione DOEVENTS ma senza risultato. ringrazio anticipatamente chiunque vorra' darmi una mano l |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:04.




















