Buonasera,
ho osservato uno strano comportamento di una query che effettuo su database access.
la query in oggetto se la eseguo con access
SELECT Turni.GiornoS, Turni.Giorno, Turni.Mese, Turni.Anno, Turni.Data, Turni.Badge, Turni.Cognome, Turni.Nome, Turni.Turno
FROM Turni
WHERE (((Turni.Giorno)="D" Or (Turni.Giorno)="F") AND ((Turni.Data) Between #4/1/2020# And #4/30/2020#) AND ((Turni.Turno)<>"x" And (Turni.Turno)<>"MALATTIA"))
ORDER BY Turni.Data,Turni.Badge;
funziona.
La stessa eseguita dall'IDE di visual basic 6.0
sSQL = "SELECT GiornoS,Giorno,Mese,Anno,Data,Badge,Cognome,Nome,Turno FROM Turni"
sSQL = sSQL & " WHERE Giorno='D' Or Giorno='F'"
sSQL = sSQL & " AND Data Between #" & Format(Text1.Text, "mm/dd/yyyy") & "# AND #" & Format(Text2.Text, "mm/dd/yyyy") & "#"
sSQL = sSQL & " AND Turno<>'x'"
sSQL = sSQL & " And Turno<>'MALATTIA'"
sSQL = sSQL & "ORDER BY Data,Badge"
funziona solo se escludo la condizione Or Giorno='F' altrimenti ignora tutto ciò che viene dopo Giorno='D' Or Giorno='F'
ed estrapola tutti i record della tabella non rispettando né il periodo né i turni diversi da x e MALATTIA né la clausola Order By.
Credo che il problema sia nella concatenazione And e Or, ma non riesco a venirne fuori.
Ma soprattutto perché funziona in access e in VB no ?