Newsgroup: it.comp.lang.delphi
Titolo: [OT] - Istruzione SQL in MSAccess2000

Ragazzi so di non essere molto On-Topic ma chiederei il vostro parere su
questa query. Mi da problemi nella istruzione WHERE; come potete vedere devo
filtrare i record secondo un intervallo di data, il problema però è che non
include gli estremi dell'intervallo. Per ovviare al problema ho provato ad
aggingere due istruzioni OR in cui aggiungo forzatamente gli estremi ma li
ignora lo stesso. E'un bug di MSAccess?
SELECT
[tblSoci].[Chiave_Esterna] AS IdSocio,
[tblSoci].[Ragione Sociale],
[tblSoci].[Indirizzo],
[tblSoci].[PIVA],
[tblSoci].[Mod_Pagamento],
[tblSoci].[Cognome]+'  '+[tblSoci].[nome] AS CognomeNome,
[tblFatture].[n_fatt] AS NumeroFattura,
[tblFatture].[data] AS DataFattura,
[tblFatture].[periodo_Dal] AS PeriodoDal,
[tblFatture].[periodo_Al] AS PeriodoAl,
[tblVenduto].[ARTICOLO],
[tblVenduto].[Desc_Articolo],
Sum([tblVenduto].[QTA]) AS SommaQuantita,
Sum([tblVenduto].[Valore]*0.9) AS ImportoTotale
FROM
(tblSoci INNER JOIN tblFatture ON
[tblSoci].[chiave_esterna]=[tblFatture].[Id_Socio])
INNER JOIN tblVenduto ON [tblVenduto].[id_Socio]=[tblSoci].[chiave_esterna]
WHERE
[tblFatture].[n_fatt]=[:NFattura] And [tblFatture].[anno]=[:AnnoFattura] And
([tblVenduto].[Data]>=[tblFatture].[periodo_dal]) And
([tblVenduto].[Data]<=[tblFatture].[periodo_al]) OR
([tblVenduto].[Data]=[tblFatture].[periodo_dal]) Or
([tblVenduto].[Data]=[tblFatture].[periodo_al])
GROUP BY
[tblSoci].[Chiave_Esterna],
[tblSoci].[Ragione Sociale],
[tblSoci].[Indirizzo],
[tblSoci].[PIVA],
[tblSoci].[Mod_Pagamento],
[tblSoci].[Cognome],
[tblSoci].[Nome],
[tblFatture].[n_fatt],
[tblFatture].[data],
[tblFatture].[periodo_Dal],
[tblFatture].[periodo_Al],
[tblVenduto].[Id_Socio],
[tblVenduto].[ARTICOLO],
[tblVenduto].[Desc_Articolo]
ORDER BY
[tblVenduto].[ID_Socio], [tblSoci].[Cognome], [tblSoci].[Nome],
[tblFatture].[n_fatt];

hai provato a usare una between?
select * from tabella where campodata between :Data1 and :Data2
A.

Grazie Alberto,
ho provato con
WHERE
[tblFatture].[n_fatt]=[:NFattura] AND [tblFatture].[anno]=[:AnnoFattura] AND
[tblVenduto].[Data] BETWEEN [tblFatture].[periodo_dal] AND
[tblFatture].[periodo_al]
ma mi scarta gli estremi, io ho fatto prove ad escludere il filtro
sull'intervallo di data e ho verificato che effettivamente è proprio la
WHERE che non funziona come dovrebbe. L'istruzione BETWEEN posso inserirla
anche sulla JOIN ??
Ora provo.

Mi rispondo da solo,
BETWEEN è accettato anche sulla condizione della JOIN ma non include gli
estremi.
Ma puo'dipendere dal formato di rappresentazione delle date?
.....


 ha scritto nel messaggio
news:ao0p7v$rnu$2...@newsreader.mailgate.org...


Nella istruzione WHERE non ho usato parametri, il confrotno č fatto tra: il
campo Data in tabella tblVenduto e i campi periodo_dal e periodo_al in
tabella tblFatture. Anche quando ho fatto prove inserendo la condizione
nella JOIN il confronto era fra campi delle tabelle richiamate nella
istruzione JOIN. Anzi credo che la via migliore sia proprio quella di
applicare la condizione nella istruzione ON della JOIN č solo che non
funziona!
"Alberto Salvati" <x@x.x from office> ha scritto nel messaggio
news:ao0pi2$hpu$1...@newsreader1.mclink.it...


 ha scritto nel messaggio
news:ao0q41$shj$1...@newsreader.mailgate.org...
