Select... WHERE...

domenica 05 agosto 2007 - 10.07

denis.basei Profilo | Senior Member

Buona domenica a tutti gli sfigati come me che il 5 agosto stanno ancora lavorando....

ho una windows form come quella che allego in databinding con un datatable. Le combobox e text box in alto servono per poter applicare dei filtri sui dati visualizzati nella datagridview. La mia domanda è questa. Dato che l'operatore può a sua discrezione filtrare i dati da 0 a 6 campi, la query che devo impostare nel dataadapter deve essere di questo tipo?

SELECT Sito, QuotaX, QuotaY, IntervalloSettimane, ..... WHERE
IDStato BETWEEN @pIDStato_I AND @pIDStato_F AND
IDTipologia BETWEEN @pIDTipologia_I AND @pIDTiplogia_F AND
BarCode BETWEEN @pBarCode_I AND @pBarCode_F AND ....


Denis

erongis Profilo | Junior Member

Secondo me è meglio usare innazitutto le parantesi che rendono il tutto più chiaro.

Poi userei una cosa del genere: "SELECT * FROM miatavola WHERE 1 = 1 " così se anche l'utente non seleziona alcun filtro sei sicuro che uno c'è di sicuro e non occupa nulla. Poi ogni filtro devi aggiungere sempre " AND pluto = 23 " avendo l'accortezza di mettere uno spazio all'inizio ed alla fine.

Spero di essere stato chiaro-

Giscotech Profilo | Junior Member

ma perchè non provi ad applicare il filtro direttamente sui controlli, per esempio intercettando l'evento SelectedIndexChanged delle combobox o il KeyPress delle textbox magari dopo l'invio. In questo modo applicando un filtro per volta potrai :

1) far visualizzare all'utente i risultati intermedi

2) le operazioni di filtraggio saranno più veloci

3) Le istruzioni sql + chiare e performanti.

Spero di esserti stato utile.
Giuseppe Scordo
Giscotech Informatics

erongis Profilo | Junior Member

Si può anche fare, però dipende dalla pesantezza della query e quindi dai tempi di rispota del server. Cmq mi orienterei verso la leggibilità della query il più possibile.

Giscotech Profilo | Junior Member

cosa intendi per pesantezza della query?

Io ho realizzato una cosa del genere su una tabella contenente circa 30000 articoli con tempi di risposta del sistema più che accettabili... ed il pc sul quale girava era anche un pò datato.

Giuseppe Scordo
Giscotech Informatics

erongis Profilo | Junior Member

Intendo dire che forse intercettare il cambiamento di selezione della combo, può creare dei rallentamenti in base al n° di records in gioco.

Se cmq i tempi sono accettabili ben venga.
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