Non vorrei fare il sapientone ma secondo me non risolvi la complessità di una query utilizzando una concatenazione di strighe in luogo di un parametro ...
capisco che quando non si ha confidenza con un certo funzionamento certe cose possano sembrare difficili da gestire ma queste cose si affinano solo con l'esperienza ....
Immagino che il tuo problema sia come far comparire / scomparire una certa condizione se un certo valore sia settato o meno , ecco perche ricorri al codice per costruire un filtro + o - complesso...
nel maggior partre dei casi puoi ricorrere ad una semplice tecnica che ti permette di tener ben separati tutti i filtri ... ti faccio un esempio cercando di essere il piu chiaro possibile
mettiamo che hai n Filtri che devono essere tutti verificati allora hai una condizione (Equivale al tuo WHERE)
(Filtro 1) AND (Filtro2) AND (Filtro3) AND .... AND (FiltroN)
Ora ogni filtro deve essere nella forma
@Par = ValoreDiDefault OR proprietà=@Par
Da quest'ultima capisci che per disattivare un filtro ti basta dare al parametro @Par un valore di Default che hai scelto te a priori rendendo l'equazione sempre vera per quel determinato filtro ... ti posso dire che è anche un modo efficente di gestire la cosa perche una OR restituisce vero alla prima condizione vera che incontra al suo interno senza continuare a valutare il resto dell'espressione)
In asp.net inoltre le cose sono ancora piu semplificate poiche i parametri possono derivare direttamente da altri webcontrol senza quindi aver carico nel codice di impostarli manualmente o comunque nei casi piu complessi hai un carico di lavoro dovuto solo all'impostazione di questi valori e non di come le query debbano essere costruite (altrimenti avresti una serie di if - switch e quant'altro annidati tra loro difficili da manutenere nel caso in cui le carte in tavola cambino) ...
Per il tuo problema ti posso dire che definendo un parametro in questa maniera
e impostando il parametro nel codice con questa istruzionecodice:<WhereParameters> <asp:Parameter Type="DateTime" Name="MyDate" /> </WhereParameters> //(da notare che quando definisci un parametro ne definisci anche il tipo)
MioDataSource.WhereParameters["MyDate"].DefaultValue = Valore
riesci tranquillamente a fare un filtro per data
Questa è una mia best pratices nulla di piu![]()
ps.
Se qualcuno me la vuole criticare sono contento cosi se ne parla un po![]()

Rispondi quotando