Newsgroup: it.comp.lang.visual-basic
Titolo: E' possibile in una Query

La seguente :
"select * FROM tabella1 Where Left(DESCRIZIONE, lungditta)=" &
StrConv(nomeditta, vbProperCase) &" and ....."
non funziona. (mi segnala operatore mancante)... forse non si può utilizzare
Left oppure non si può utilizzare in questo modo?
Grazie
--
Gulp ! Forse mi sono perso qualcosa !
Per rispondere via E-mail togli la x da 
xd...@cyberjunkie.com

 Left oppure non si può utilizzare in questo modo?
Devi visualizzare la query già composta, così vedi subito i problemi.
lungditta è una variabile VB o un campo del DB?
Gli apicini ci sono?
Ciao
Alberto

 Gli apicini ci sono?
& Left(DESCRIZIONE, lungditta) &
Non mi sembra che qui ci volgiano, oppure sbaglio?
Grazie
Ciao


 Non mi sembra che qui ci volgiano, oppure sbaglio?
?
Left ritorna una stringa, quindi va confrontata con una stringa, quindi ci
vogliono gli apicini.
Comunque ribadisco: il 99% dei problemi con le query si scoprono
immediatamente visualizzando la query già composta, e facendola eseguire
direttamente nel DB senza passare per VB.
Quindi, comporre la stringa SQL in una variabile stringa, poi, prima di
eseguire, metti un breakpoint, stampi la stringa nella finestra immediata,
la copi nella clipboard, poi la esegui in una finestra SQL di Access o nel
Query Analyzer di Sql-Server o MSDE (a seconda di cosa usi).
Se ci sono errori, si capiscono subito.
Nel tuo caso, ad esempio, quella variabile lungditta per il DB non esiste, e
mancano gli apicini nel secondo operando del confronto.
Ciao
Alberto

 Se ci sono errori, si capiscono subito.
io parto diversamente :
creo la queri in access
la provo in Vb , se funziona (70% dei casi) tutto ok , se non funziona
riparto da 0 creando la query semplificata :
"Select * From tabella1"
poi se funziona vado in vb inserendo le JOIN e in seguito le WHERE
"Select * From tabella1 where campo1='Ciao' "
se funziona metto le variabili
"Select * From tabella1 where campo1=' " & myStringa & " ' "
(gli spazi tra gli apici so messi solo per una migliore leggibilita' ..)
e poi vado avanti fino ad ottenere la mia query finale Funzionante
^_^
cmq mi affascina , purtroppo sto ancora studiando e approfondendo diversi
capitoli di SanBalena ma giuro che mi leggero' il prima possibile i capitoli
sui db !
Mi sta troppo ad intrigare , intanto mi vado a leggere su google qualcosa di
A(l)DO giovanni e giacomoDAO !
Happy Learning !

 quindi ci vogliono gli apicini.
Scusami Alberto... non è per insistere, magari mi sfugge qualcosa... la
prova della query ni da sempre operatore mancante.
Ma il discorso degli apicini non mi torna. Questa è la Query completa:
"Select * from ditte Where Left(DESCRIZIONE, lungditta)=" &
StrConv(nomeditta, vbProperCase) & " AND Year(LADATA)= " & passanno & " AND
(TIP)= 'P' ORDER BY LADATA"
Nei messaggi di errore, l'unica parte che sembra non rispondere è la prima
,le altre parti tutte restituiscono un dato o la scrittura corretta.
Parte che non gira (almeno secondo me):
Where Left(DESCRIZION, lungditta)= ...tutto quello che segue passa e non da
errore.. almeno così sembra.
dici che
dim lungditta as integer
lungditta= len(txtNomeDitta)
 non lo posso usare perchè fa casino?
Come passo a Left il numero di caratteri se il nome della ditta da trovare
cambia?
Ciao
Grazie
e... auguri di Buon Natale


 e... auguri di Buon Natale
Anche a te.


Invece di incaponirmi.... dovrei ascoltare (leggere) bene !
Ok grazie a entrambi.Ora mi da l'errore: "parametri insufficienti,
necessario almeno 1"
Mi succedeva quando sostituivo le tabelle dopo aver corretto il nome di
campo... tutto a posto, ho controllato. I campi nella query sono digitati in
modo corretto.Cos'altro ?...ecco che mi incaponisco ancora, forse quel Left
non riesce proprio ad estrarre una parte di stringa dal campo Definizione
perchè definizione non viene riconosciuto come nome di campo?
Che casino!


 ha scritto:
Beh visto che non capivo... progredisco velocemente...si fa per dire :-)))
Ci sono riuscito...guardando bene cosa c'era scritto nel post di Lupo. Ci
sono riuscito oltre che tenendo conto dei due apicini di Lupo messi al posto
giusto per far riconoscere sta benedetta stringa, anche cambiando quel
famigerato Left così:
Where Left(DESCRIZION,'" & lungditta & "')=
E' ancora voi comunque che devo ringraziare.....perchè siete in grado di
sopportare.
Ancora Buon Natale !
Mi merito anche gli auguri di Buon Anno?
Ciao e grazie.


 riparto da 0 creando la query semplificata :
Concordo.
In realtà, per query veramente banali, tipo quella di Gulp, le scrivo
direttamente in VB e le provo da lì. Solo se c'è qualche problema apro il
Query Analyzer e la testo in maniera esplicitata.
Visto che, in questo caso, la query era già stata scritta in VB, sono
partito col ragionamento dal punto del debug in poi.
Ciao
Alberto

 Where Left(DESCRIZION,'" & lungditta & "')=
Se cosě funziona, vuol dire che Access č veramente troppo buono...
Sarebbe meglio:
.... Where Left(DESCRIZION," & cstr(lungditta) & ")='" & variabile_stringa &
"' ecc...
E' fondamentale che lungditta sia di un tipo senza decimali (Int o Long),
altrimenti potresti avere casini con la virgola con le approssimazioni di
VB.
Ciao
Alberto

 "' ecc...
Vero, ma VB esegue una specie di "precompilazione" della "propria" sintassi,
per poi passarla ad Access. Dubito infatti che Access la accetti, nella sua
forma originale" (tranne forse l'intervento di VBA) se non si passa da VB.

 forma originale" (tranne forse l'intervento di VBA) se non si passa da VB.
Allora....
Per chiarezza, ho provato la sintassi di Gulp direttamente in Access e...
incredibile... funziona.
Sostanzialmente, Access accetta anche delle stringhe al posto di valori
numerici.
Quindi, la sintassi Left(Campo,'5') è valida, anche se viene probabilmente
convertita nella più corretta Left(Campo,5).
Questa storia delle conversioni implicite è arrivata fino ad Access...
Ciao
Alberto

Beh... sono compiaciuto del fatto che la query abbia mosso un mini
"dibattito" tra due santoni del NG.
E' un piacere stare a leggervi, si impara sempre qualcosa.
Ciao.
