PDA

View Full Version : [VB, SQL] Ricerca per data su Access (Query)


race2
04-07-2002, 12:30
Devo fare una ricerca per data su un campo "Date" di Access:

la data da ricercare la passo con due "DateTimePicker" e poi formattandole con il seguente codice:

1° Metodo:


Dim DatDa As Date = dtpDa.Value
Dim DataDa As Date = DatDa.ToShortDateString
Dim DatA As Date = dtpA.Value
Dim DataA As Date = DatA.ToShortDateString


Dim sql2 As String = "SELECT Quantita FROM Movimenti WHERE Data >= #" & DataDa & "# AND Data <= #" & DataA & "#


2° Metodo:


Dim DatDa As Date = dtpDa.Value
Dim DataDa As Date = DatDa.ToShortDateString
Dim DatA As Date = dtpA.Value
Dim DataA As Date = DatA.ToShortDateString


Dim sql2 As String = "SELECT Quantita FROM Movimenti WHERE Data Between #" & DataDa & "# AND #" & DataA & "#


Con nessuno dei due metodi funziona,

con il primo mi da errore di Query,

con il secondo il risultato e' "0".


Come devo fare per fare una ricerca per data???

cionci
04-07-2002, 17:12
Ti ricordi quando parlavamo di "Visualizzazione SQL" ?

Stampa la stringa della query SQL a video (devi fare questo per vedere se vengono interpretati come tu volevi i parametri)...copiala e incollala in una nuova query in "Visualizzazione SQL"... Mettici un bel ; in fondo e salvala...
Al momento di salvarla Access svolge già un controllo sintattico e successivamente quando la esegui puoi ottenere un eventuale errore...
Se non ti da errori allora devi studiare qualche metodo alternativo...ad esempio usando la funzione di Access DateValue...
Puoi guardare nell'help di Access per vedere come si usa...
Comunque prova prima le query in "Visualizzazione SQL" e poi copiale e mettile nel tuo programma che sia VB o ASP...

In questo modo sei sicuro che la query che vai ad inserire nel programma funziona...

Comunque per il tuo caso dovrebbe andare una cosa del genere :

SELECT * FROM Tabella WHERE Data >= DateValue('20/01/2002') AND Data < DateValue('25/01/2002')

In questo modo ti cerca tutti i campi che hanno giorno compreso fra il 20/01/2002 e il 24/01/2002 (attenzione...24, non 25 !!!)...

cionci
04-07-2002, 17:14
Ad occhio DataA e DataDa on dovrebbero essere String ?!?!?

race2
04-07-2002, 19:28
Infatti sono variabili di tipo : Data

dim DataDa as Date ---> data iniziale
dim DataA as Date ---> data finale

questa sera provo come mi hai detto tu, grazie per ora , ciao!!!

cionci
04-07-2002, 19:58
Originariamente inviato da race2
[B]Infatti sono variabili di tipo : Data

dim DataDa as Date ---> data iniziale
dim DataA as Date ---> data finale

Appunto...dovrebbero essere stringhe ;)
ToShortDateString non ritorna una stringa ?
Come fa a concatenarti una data valida se non ci concateni una strnga alla query SQL ?

race2
05-07-2002, 13:35
Originariamente inviato da cionci
[B]Comunque per il tuo caso dovrebbe andare una cosa del genere :

SELECT * FROM Tabella WHERE Data >= DateValue('20/01/2002') AND Data < DateValue('25/01/2002')

In questo modo ti cerca tutti i campi che hanno giorno compreso fra il 20/01/2002 e il 24/01/2002 (attenzione...24, non 25 !!!)...

Sei forte!!!!!!!!
Funziona benissimo, mi hai salvato........
ti ringrazio ciao..........