Newsgroup: it.comp.appl.access
Titolo: aprire strsql da codice

Salve!
come faccio ad aprire una query
strsql "Select .....
ho provato con DoCmd.OpenQuery strsql ma ho errore
 
grazie

 
 
DoCmd.RunSQL "UPDATE TCompany INNER JOIN _Contacts ON TCompany.ShortName = 
...
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........


grazie Ammammata
io ho una select in più
ho l'errore: un'azione EseguiSQL richiede un argomento costituito da un'istruzione SQL
 
 


non si capisce se parli di query salvata o di stringa sql
 
per aprire una query (oggetto di database) devi usare
docmd.OpenQuery "nome della query"
 
per eseguire invece una stringa sql
 
docmd.runsql "delete * from...."
 
ma per il runsql non esiste il select e basta
 
spiega meglio cosa intendi
 
BFS


ciao BFS e grazie
 
devo aprire delle query di selezione 
che azichè essere salvate 
sono sul modulo
strSql = " Select * From Tb ecc. ecc.
 
ho trovato questo..
   Set qd = CurrentDb.CreateQueryDef("qryTemp", strSql)
   DoCmd.OpenQuery qd.Name
   CurrentDb.QueryDefs.Delete qd.Name
 
ma credo si possa fare in maniera più semplice
 
 
 
 
 
 
 
 

 ma credo si possa fare in maniera più semplice
 
Damo memento che aprire una Query Select è assurdo, immagino tu la debba aprire per Visualizzare i dati.
Ne consegue che devi creare proprio una query Temporanea, quindi ... non hai altro modo
 
@Alex


ciao Alex
si proprio cosi',  devo aprire delle query per controllare


e se volessi aprire diverse query 
in un'unica volta
come devo impostare query temporanea,
per poi chiuderle tutte una volta visionate?

 per poi chiuderle tutte una volta visionate?
 
Se sono tutte TEMPORANEE... devi generarle, aprirle una alla volta e poi chiuderle a MANO, oppure un Button che esegue la chiusura... 
Docmd.Close acQuery,Name
 
Quindi se generi i nomi in modo automatico con un Ciclo, ma nel tuo caso non so se ha senso... dal momento che i predicati SQL non si capisce bene da dove arrivino, parte da altrettante vairabili o costanti nel codice...?!
 
Premesso che è estremamente discutibile questa gestione, ma se avessi una Funzione di questo tipo:
Function getSQL(index as integer) as String
    Select Case Index
        Case 1: getSQL="SELECT ....."
        Case 2: getSQL="SELECT ....."        
        Case 3: getSQL="SELECT ....."
        Case n: getSQL="SELECT ....."
    End Select
End Function
 
Poi per creare le Query Temp ed aprirle:
 
Dim index As integer
For index=1 to N
   CurrentDb.CreateQueryDef("qryTemp_" & Index , getSQL(index))
   DoCmd.OpenQuery "qryTemp_" & Index
next
 
Per chiuderle... reverse:
For index=1 to N
   DoCmd.Close, acQuery, "qryTemp_" & Index
   ' sarebbe meglio mettere un DeleteObject
   DoCmd.DeleteObject acQuery, "qryTemp_" & Index
next
 
ecc...
 
@Alex


grazie Alex
siccome le apro anche una ad una
per vedere se la query temp esiste già, per eliminarla senza avere errore?


risolto con
Function QueryExist(NomeQuery As String) As Boolean
' Da richiamare con: If QueryExist("NomeQuery")=true then
    On Error GoTo ERR_NOTEXIST
    Dim strSQL As String
    QueryExist = False
    strSQL = CurrentDb.QueryDefs(NomeQuery).Sql
    QueryExist = True
EXIT_HERE:
    Exit Function
ERR_NOTEXIST:
    Resume EXIT_HERE
End Function