Newsgroup: it.comp.appl.access
Titolo: Re: Problemi con una Query su VBA...

 GiornalieraDett1]![CasellaCombinata47]
AND ((DipTariffa.[Nome]=[Forms]![Giornaliera]![Sottomaschera 
GiornalieraDett1]![Nome] ; "
 
Cosi ad occhio, conto 5 parentesi "(" aperte, 1 parentesi ")" chiusa, quindi 
4 parentesi ")"che non si chiudono.
In pratica le parentesi tonde non servono a nulla in questa condizione 
WHERE, in quanto l'unico AND stabilisce gia la precedenza degli operandi. 
 


prova
 rsSQL = "SELECT* FROM DipTariffa WHERE 
 ((DipTariffa.[IDLavoro])=[Forms]![Giornaliera]![Sottomaschera 
 GiornalieraDett1]![CasellaCombinata47]) AND ((DipTariffa.[Nome])=[Forms]![Giornaliera]![Sottomaschera 
GiornalieraDett1]![Nome])

GiornalieraDett1]![Nome])
 
Sulla falsariga di quanto scritto da pfm, questo codice di seguito con meno 
parentesi potrebbe andare?
rsSQL = "SELECT* FROM DipTariffa " _
& "WHERE" _
& " 
(DipTariffa.[IDLavoro]=[Forms]![Giornaliera]![SottomascheraGiornalieraDett1]![CasellaCombinata47])" 
_
& " AND 
(DipTariffa.[Nome]=[Forms]![Giornaliera]![SottomascheraGiornalieraDett1]![Nome])" 
 


...e le mitiche virgolette già citate?
 
BC

Quando scrivi sql non far risolvere al motore di jet i valori condizionati... intendo i riferimenti ai controlli nelle form...
Questa cosa è da evitare per almeno 2 motivi:
1) uno spreco di tempo... ad ogni riga il motore deve reinterpretare in modo esplicito il valore risolvendolo prima di dar luogo all'applicazione del criterio, se poi hai più criteri in AND la cosa aumenta... 
Se invece lo convertì prima e lo inserisci nella stringa dal già risolto tu lo fai 1 volta sola.
 
2) se passi una query simile ad SQLSERVER o qualsiasi RDBMS verrebbe ignorata tutta la WHERE CONDITION ex 8nviato l'intero recordset al client tendenti una Ferrari come un triciclo... JET in locale che elabora tutta la tabella del server.
 
Suggerisco sempre di riflettere su questi importantissimi aspetti veramente tecnici.
 
@Alex

 ...
 
Persino con la sintassi "giusta" in rispetto alle parentesi ecc. il 
codice non puo funzionare perché DAO non ha nessun idea di Forms ecc.
v.a. 
http://www.donkarl.com/it?FAQ6.4
 
 
Già per questa raggione lui non puo usare i riferimenti all'interno 
della stringa SQL ma deve lasciarli all'esterno e fornire i valori.
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it
 


Ma in realtà non sappiamo come esegue la Query, almeno io non lo vedo in questo 3D parziale...
Esempio se scrivesse nella proprietà SQL di QueryDefs("NomeQuery"), la sintassi con la Forms!... verrebbe risolta.
 
Oppure sbaglio...?
 
@Alex


Ciao @Alex,
il post originale è dell'8 marzo e l'op chiede perché si presenti un errore nell'eseguire l'sql tramite DAO, si chiede anche perché avendolo copiato da una query salvata in Access (funzionante) in vba si presenti un errore.
La mia risposta era stata simile a quella di Karl.
Ciao
Mat.


Devi scusarmi ma usando il WEB(GoogleGroups) vedo in effetti solo un Parziale... non so perchè, ed il tuo intervento non lo vedo proprio, come del resto nemmeno l'intervento Originale...
 
Ciao
@Alex

In effetti non capisco nemmeno io perché si sia aperto un thtead nuovo.
Anche io uso Google groups e ne vedo due.
Boh, ciao.
Mat.


Ciao Alex, grazie per la risposta. 
In questo post in cui argomenti con linguaggio tecnico erudito, al di sopra delle mie conoscenze, volevi dire questo? 
 
Dim StringValore1, StringValore2 As String 
 
StringValore1 = [Forms]![Giornaliera]![Sottomaschera GiornalieraDett1]![CasellaCombinata47] 
 
StringValore2 = [Forms]![Giornaliera]![Sottomaschera GiornalieraDett1]![Nome] 
 
  rsSQL = "SELECT* FROM DipTariffa WHERE DipTariffa.[IDLavoro]= " & StringValore1 & "  And DipTariffa.[Nome] = """ & StringValore2 & """" 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Il giorno giovedì 15 marzo 2018 15:56:03 UTC+1, Karl Donaubauer ha scritto:

Ciao Karl grazie per la risposta. So che sei un veterano perché eri in questo Forum già nel '97 ai tempi di Roberto_da_casa :-) 
Ho letto i tuoi suggerimenti nel tuo sito: 6.16 Aprire una query parametrica da VBA
ma non ho capito il parametro "Mia_Query_Parametrica".
 
Set qdf = db.QueryDefs("Mia_Query_Parametrica")
Ho provato a mettere una query "Fisica" di Access ma non va...


Questa riga è errata:
Dim StringValore1, StringValore2 As String 
 
La prima variabile non è Stringa ma VARIANT.
 
Questa dichiarazione è giusta:
Dim StringValore1 As String, StringValore2 As String 
 
Volevo dire questo è errato(disfunzionale):
rsSQL = "SELECT* FROM DipTariffa WHERE
 (((DipTariffa.[IDLavoro])=[Forms]![Giornaliera]![Sottomaschera
GiornalieraDett1]![CasellaCombinata47]
AND ((DipTariffa.[Nome]=[Forms]![Giornaliera]![Sottomaschera
GiornalieraDett1]![Nome] ; " 
 
Questo è giusto:
rsSQL = "SELECT* FROM DipTariffa WHERE
 (((DipTariffa.[IDLavoro])=" & [Forms]![Giornaliera]![Sottomaschera
 GiornalieraDett1]![CasellaCombinata47] & " AND ((DipTariffa.[Nome]=" & [Forms]![Giornaliera]![SottomascheraGiornalieraDett1]![Nome] & "; " 
 
Saluti
@Alex

 Ho provato a mettere una query "Fisica" di Access ma non va...
 
Con il link volevo solo documentare il problema di DAO e oggetti di 
Access. Sei alla via giusta con il codice che hai scritto ora. Forse con 
alcuni miglioramenti:
 
Dim strVal1 As String, strVal2 As String
 
strVal1 = _
    Forms!Giornaliera![Sottomaschera GiornalieraDett1]!CasellaCombinata47
 
strVal2 = Forms!Giornaliera![Sottomaschera GiornalieraDett1]!Nome
 
rsSQL = "SELECT * FROM DipTariffa " & _
	" WHERE DipTariffa.IDLavoro= " & strVal1 & _
	" And DipTariffa.Nome = """ & strVal2 & """"
 
Sarebbe meglio di evitare spazi nei nomi di oggetti e nomi 
insignificanti come "CasellaCombinata47".



Ok, è tutto chiaro ma già che c'ero volevo capire l'uso di QueryDef, per questo chiedevo spiegazioni su quel parametro db.QueryDefs("Mia_Query_Parametrica") 
...Puoi spiegarmi?  


..... Eppure mi funziona con la variabile stringa....

 ..... Eppure mi funziona con la variabile stringa....
 
No, ti funziona è vero, ma non con la variabile Stringa... ti funzina in quanto come l'hai dichiarata è VARIANT e si adatta a tutto... ma è VARIANT.
 
Quindi la PRIMA è VARIANT la 2° dove lo definisci esplicitamente è stringa. 
 
Se ti fidi... bene... altrimenti... puoi leggere queste cose in un TESTO... altrimenti pazienza.
 
@Alex


Certo che mi fido ! :-) ... ho solo detto quanto constatavo, non sapendo che  persino ciò che constatavo era falso! :-)