INFO -> BindingSource.Filter

lunedì 06 ottobre 2008 - 22.30

mammamia Profilo | Newbie

Salve a tutti, un piccolo chiarimento su come usare BindingSource.Filter in C#

Vorrei filtrare in un database Access un'intervallo di valori compresi tra due date,
in SQL userei BETWEEN ma con BindingSource.Filter non sembra funzionare, quindi vorrei chiedervi come procedere in questi casi, anche perchè ho fatto
diverse prove ma mi ritorna spesso l'errore "Stringa non riconosciuta come valore DateTime valido."

Es. Codice:

DateTime DataOggi = DateTime.Today; DateTime DataFutura = DataOggi + new TimeSpan(15, 0, 0, 0); BindingSource.Filter = "[Data Scadenza] >= #" + DataOggi + "# AND <= #" + DataFutura + "#";

ho provato anche ad inserire la data in formato stringa "dd/MM/yyyy" ma non funziona ugualmente.

HELP!!!

freeteo Profilo | Guru

ciao,

>BindingSource.Filter = "[Data Scadenza] >= #" + DataOggi + "# AND <= #" + DataFutura + "#";
in questa riga però manca la seconda parte, ovvero dopo l'AND devi mettere di nuovo il campo data, quindi:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
o quello che ti serve, cmq un identificativo di campo anche per la parte di limite superiore di data.
Oppure è solo un errore di trascrizione qui sul forum?

Poi mi sovviene un'altra domanda, ma che tipo di dati stai caricando, Access o Sql?
Di solito gli "#" si usano per identificare date in Access, o cmq oledb, non è che la sintassi sia sbagliata se si tratta di sql server?
Magari provare con:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

mammamia Profilo | Newbie

Il database è Access, ed effettivamente nella trascrizione avevo lasciato un pezzo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Il campo data in Access è chiaramente un campo Data appunto, quindi non capisco perchè mi ritorna l'errore:

"Stringa non riconosciuta come valore DateTime valido."


EDIT: Mi dimenticavo, ho fatto anche la prova di scrivere la query nel disegnatore query, e li mi funziona senza nessun errore

mammamia Profilo | Newbie

Ho risolto sostituendo # con '

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

freeteo Profilo | Guru

>Ho risolto sostituendo # con 'BindingSource.Filter = "[Data Scadenza] >= '" + DataOggi +
>"' AND [Data Scadenza] <= '" + DataFutura + "'";
ok, ma i campi sono stringhe o date?

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

mammamia Profilo | Newbie

I codici delle date sono i seguenti, quindi sono formati data tradizionali.

DateTime DataOggi = DateTime.Today; DateTime DataFutura = DataOggi + new TimeSpan(15, 0, 0, 0);

Mi eimane poco chiaro anche a me, ho controllato anche il campo nel database ACCESS ma è impostato Date/Time di default senza cambiare nulla.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5