Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Query
venerdì 03 novembre 2006 - 19.45
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
tecnovico
Profilo
| Junior Member
77
messaggi | Data Invio:
ven 3 nov 2006 - 19:45
ciao a tutti, ho una pagina asp che funge da filtro per effettuare una query. sono 4 filtri (data,prezzo...). il metodo che richiamo alla pressione di un buttone di eseguzione mi esegue la query con i parametri che gli vengono passati.
ora voglio mettere delle checkbox per attivare o disattivare i filtri, cosi la query cambia: devo fare un metodo o mettere uno switch case per ogni combinazione di filtri attivi o c'è qualche altra tecnica?
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 3 nov 2006 - 22:13
>ora voglio mettere delle checkbox per attivare o disattivare
>i filtri, cosi la query cambia: devo fare un metodo o mettere
>uno switch case per ogni combinazione di filtri attivi o c'è
>qualche altra tecnica?
Ciao,
generalmente funziona così. In presenza di più checkbox si calcolano tutte le combinazioni possibile e a livello di codice si fa una struttura ramificata usando switch oppure degli if uno dentro l'altro. Non conosco altre tecniche.
Ciao
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
tecnovico
Profilo
| Junior Member
77
messaggi | Data Invio:
sab 4 nov 2006 - 13:05
nel post filtro per selezione elementi si parlava di store procedure tipo:
CREATE PROCEDURE GetElementi
(
@param1 int = NULL,
@param2 varchar(10) = NULL
AS
BEGIN
SELECT * FROM TuaTabella
WHERE (@param1 IS NULL OR campo1 = @param1)
AND (@param2 IS NULL OR campo2 = @param2)
END
pero non ho capito bene come si usano, come si creano, la sintassi... non dovrebbe essere una soluzione?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
dom 5 nov 2006 - 04:21
>nel post filtro per selezione elementi si parlava di store procedure
>tipo:
Ciao, credo di averti risposto io con quella sintassi, dando perscontato che utilizzassi SQL Server..
Poi, vedendo la risposta accettata, non credevo avessi necessità di spiegazioni..
Cmq, scusate se mi intrometto..
Se tu lanci quello che ti ho postato su SQL Query Analyzer di SQL 2000 o con Management studio di 2005, lo script ti crea una stored procedure.
Una stored procedure è una vera e propria procedura immagazzinata sul Database che può essere richiamata da codice e alla quale possono essere passati parametri (leggi qui
http://msdn2.microsoft.com/en-us/library/ms191436.aspx
).
Nel nostro caso, la sp accetta in input i due parametri di filtro (possono essere anche di più, ovviamente) e quello che fa è eseguire una select che ti torna dei dati in base ai suddetti parametri..
Una volta creata, da codice, dovrai utilizzare un oggetto OledbCommand o SQLCommand ed impostare nella proprietà CommandType
il valore OLEDBCommandType.StoredProcedure o SQLCommandType.StoredProcedure e nella proprietà CommandText il nome della stored procedure, ad esempio "GetElementi".
Quindi io ti ho indicato come non preoccuparti della generazione di un SQL dinamico in base ai filtri..
Tu mi dicevi di avere tante DropDownList.. In questo modo (con la tecnica che ti ho passato) eviti di gestire lato applicativo la creazione della Where di filtro sui dati. Basta che ti crei una collezione di parametri, e poi, passi null a quelli che non hai valorizzato sulla pagina..
Addirittura puoi permetterti di non passare quelli che non valorizzi, tanto nella sp il default dei parametri di filtro deve essere a NULL..
Insomma, basta che lanci la stored procedure con un ExecuteReader o con adapter per ricavare i dati..
Ed ora passo a spiegarti brevemente la logica sql:
La chiave sta sulla where..
In poche parole, se tu passi un valore ai parametri o ad un parametro, viene valutata la seconda uguaglianza della condizione (Campo = ValorePassato), viceversa, se i parametri sono NULL viene valutata la prima uguaglianza (parametro IS NULL). Di conseguenza quella select ricaverà dati filtrati solo dove i parametri sono stati valorizzati e tutti i dati se tutti i parametri sono vuoti.. Ovviamente puoi fare in modo che se tutti i parametri sono null, anche il resultset è vuoto.. basta aggiungere un IF sulla stored procedure.. ma questo lo lascio a te se dovessi averne bisogno
Spero di essere stato esauriente, anche se sicuramente ho dato perscontato altre cose
facci sapere!
ciao!
Alx81 =)
http://blogs.dotnethell.it/suxstellino
tecnovico
Profilo
| Junior Member
77
messaggi | Data Invio:
dom 5 nov 2006 - 11:12
io uso sql server(per ora express). quindi mi consigli di operare con l'utilizzo delle store procedure?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
dom 5 nov 2006 - 14:09
>io uso sql server(per ora express). quindi mi consigli di operare
>con l'utilizzo delle store procedure?
Direi di sì, se hai letto il link che ti ho mandato, ci sono elencati alcuni dei vantaggi per cui è meglio utilizzarle..
Oltre a quelli indicati, le stored procedure ti permettono la protezione del tuo sql, evitando sql injection.. inoltre, essendo immagazzinate sul database, hanno un piano di esecuzione già calcolato e quindi anche l'esecuzione, risulta più veloce..
Puoi usare viste e stored procedure, ma evita, per quanto possibile, l'utilizzo di statement SQL nel codice..
In definitiva, te le consiglio vivamente, anche perchè, come potrai vedere, ti permettono di spostare la maggior parte delle logiche dati direttamente sul database, evitanto codice più "sporco" nelle tue applicazioni, rendendo anche più modulare il tuo progetto..
ciao!
Alx81 =)
http://blogs.dotnethell.it/suxstellino
Torna su
Stanze Forum
Elenco Threads
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 !