Newsgroup: it.comp.appl.access
Titolo: Problemi con una Quey in VBA

 
 
 
 
 
 
 
 
 
 
 
 
 
 
Salve... potreste dirmi cosa c'è che non va in questa query su VBA? 
Mi dice che c'è un errore di sintassi... 
 
 Dim dbs As DAO.Database 
 Dim rst As DAO.Recordset 
 Dim rsSQL As String 
 
     Set dbs = CurrentDb 
 
   rsSQL = "SELECT* FROM DipTariffa WHERE (((DipTariffa.[IDLavoro])=[Forms]![Giornaliera]![Sottomaschera GiornalieraDett1]![CasellaCombinata47] AND ((DipTariffa.[Nome]=[Forms]![Giornaliera]![Sottomaschera GiornalieraDett1]![Nome])) ; " 
 
    Set rst = dbs.OpenRecordset(rsSQL) 


Mi butto (non sono mai intervenuto nel NG nel dare risposte...)
 
se è codice e stai passando un parametro, vanno messe le virgolette (tre 
per una stringa, una per un numerico)
 
""" & [Forms]![Giornaliera]![Sottomaschera 
GiornalieraDett1]![CasellaCombinata47] & """
 
se quella è una casella combinata va aggiunta la colonna attiva 
.casellacombinata.column(0)
togli tutte le parentesi..
Spero di non aver confuso le idee
 
BC

Ciao,
direi troppe parentesi tonde aperte rispetto a quelle chiuse, toglile tutte, poi metti uno spazio dopo Select, per il resto: sql da brivido.
Mat.


ciao
normalmente quando scrivo questo
attivo il breakPoint
e se vuoi scrivo
scrivo debug.print rsSQL 
in modo da vedere in finestra immediata il codice
 
e poi copio e incollo in una query cosi' vedo gli errori
 
mi pare subito SELECT vuole uno spazio dopo


Ciao Mat...
Niente da fare... 
Ho tolto le parentesi e inserito lo spazio dopo  Select * 
Adesso mi restituisce: 
"Parametri insufficienti. Previsto 2"
Come query funzionava anche prima con le parentesi,
non ho mai capito perché su VBA,  SQL ha una sintassi diversa...


... Giusto BC! Grazie!!! :-)  sono 3 giorni che impazzisco! 
giusta la soluzione delle virgolette, (errata quella di .column(0) )
ribadisco come nell'altra risposta a Mat:
Quella sintassi funzionava nella query ... ma perché VBA non accetta il linguaggio SQL pari pari?... 
Grazie ancora !


Ciao pfm... scusa ma non ho ben capito il tuo metodo che cmq mi pare interessante. 
Il breackPoint sarebbe la striscia rosso che blocca il codice in Debug, giusto? 
Poi scrivi debug.print rsSQL nella riga successiva al rsSQL? .... ma se la sintassi è errata cosa restituisce nella finestra immediata?

Ciao, la sintassi è la stessa, la differenza è che all'interno delle query salvate è Access che fa il lavoro 'sporco' sostituendo forms![]... col valore contenuto nei controlli, questo accade perché Access è 'consapevole' dei propri forms e del loro contenuto, mentre Dao, all'interno del codice vba, non sa nulla dei forms e quindi forms![]... non viene riconosciuto. 
Riguardo le parentesi ho qualche dubbio che le coppie non corrispondenti piano essere interpretate correttamente nelle query o in vba.
Ciao
Mat


si i break point sono i punti rossi
eseguendo il programma si ferma alla riga del breakpoit e poi premi F8 per passo passo o F5 per proseguire senza fermarti
 
io scriverei cosi'
 
rsSQL = "SELECT * FROM DipTariffa " & _
        "WHERE (((DipTariffa.[IDLavoro])= " & [Forms]![Giornaliera]![Sottomaschera GiornalieraDett1]![CasellaCombinata47] & " AND " & _
              "((DipTariffa.[Nome]= " & chr(34) & [Forms]![Giornaliera]![Sottomaschera GiornalieraDett1]![Nome] & chr(34) & " ))"
perche' la SQL deve avere i valori della form
 
ID penso numerico
nome penso stringa quindi devo racchiuderla dentro virgolette