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
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Ricerca elementi
mercoledì 22 ottobre 2008 - 13.34
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
mer 22 ott 2008 - 13:34
Ho una query del tipo
...
WHERE ((Contratti.DataContratto)>=[@DataInizio] And (Contratti.DataContratto)<=[@DataFine]) AND (Contratti.CodiceGruppoCliente = @CodiceGruppoCliente) AND (Contratti.CodiceAzione = @CodiceAzione) AND (Contratti.CodiceTariffa = @CodiceTariffa)
GROUP BY Anag_Comuni.Comune;
e da codice:
DsDati = new DataSet();
myCommandCP.Parameters.Add(new OleDbParameter("@DataInizio", DataInizioRic.Text));
myCommandCP.Parameters.Add(new OleDbParameter("@DataFine", DataFineRic.Text));
myCommandCP.Parameters.Add(new OleDbParameter("@CodiceGruppoCliente", ddlGruppoRic.SelectedValue));
myCommandCP.Parameters.Add(new OleDbParameter("@CodiceAzione", ddlAzioneRic.SelectedValue));
myCommandCP.Parameters.Add(new OleDbParameter("@CodiceTariffa", ddlTariffaRic.SelectedValue));
myCommandCP.CommandType=CommandType.StoredProcedure;
OleDbDataAdapter DataAdatp = new OleDbDataAdapter(myCommandCP);
DataAdatp.Fill(DsDati, "ElencoContratti");
Come posso modificare la query per fare in modo che, anche se non passo valori al codice
(esempio ddlTariffaRic.SelectedValue nullo) mi vengano selezionati *tutti* gli elementi .... a differenza di quanto ddlTariffaRic.SelectedValue ha un valore, caso in cui mi vengono recuperati solo gli elementi che contengono tale valore?
Grazie mille
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 22 ott 2008 - 17:56
>Come posso modificare la query per fare in modo che, anche se
>non passo valori al codice
Il metodo che ti passo è piuttosto bruttino, ma se non hai particolari esigenze di prestazioni e/o hai poche righe, ti aiuta molto:
Nella condizione, basta testare il parametro NULL in OR con quella che filtra effettivamente:
...
WHERE
(@CodiceGruppoCliente IS NULL OR Contratti.CodiceGruppoCliente = @CodiceGruppoCliente)
AND... (
>Grazie mille
di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
gio 23 ott 2008 - 00:36
va benissimo!!!
grazie mille
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
gio 23 ott 2008 - 18:21
Non sembra funzionare e non capisco dove sbaglio
ho dovuto cambiare
(@CodiceGruppoCliente IS NULL OR Contratti.CodiceGruppoCliente = @CodiceGruppoCliente)
in
(@CodiceGruppoCliente = '' OR Contratti.CodiceGruppoCliente = @CodiceGruppoCliente)
in quanto il valore passato di tipo string era una stringa vuota
quando non seleziono nulla nel DDL, tutto OK... visualizzo tutti gli elementi, quando invece seleziono un elemento... il gridview è vuoto
Cosa sbaglio??
Grazie mille
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 24 ott 2008 - 02:20
>quando non seleziono nulla nel DDL, tutto OK... visualizzo tutti
>gli elementi, quando invece seleziono un elemento... il gridview
>è vuoto
mmmh.. sinceramente non capisco.. La parte che non ti funziona è rimasta identica..
Hai provato a vedere se effettivamente ti arriva la chiamata come la vorresti?
Hai provato il SQL Profiler per controllarla?
Sicuro di passare correttamente i dati?
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
squilibrio
Profilo
| Expert
527
messaggi | Data Invio:
mar 28 ott 2008 - 12:41
La stored query è
SELECT Anag_Comuni.CodiceComune, Anag_Comuni.Comune, Sum(Rel_AgentiAree.Valore) AS Gruppo, Sum(Rel_AgentiAree_1.Valore) AS Azione, Sum(Rel_AgentiAree_2.Valore) AS Tariffa, Sum(Rel_AgentiAree.Valore)+Sum(Rel_AgentiAree_1.Valore)+Sum(Rel_AgentiAree_2.Valore) AS Totale, Count(*) AS Conteggio
FROM ((((((Contratti INNER JOIN Anag_ContrattoTariffe ON Contratti.CodiceTariffa=Anag_ContrattoTariffe.CodiceTariffa) INNER JOIN Anag_ContrattoAzioni ON Contratti.CodiceAzione=Anag_ContrattoAzioni.CodiceAzione) INNER JOIN Anag_ContrattoGruppi ON Contratti.CodiceGruppoCliente=Anag_ContrattoGruppi.CodiceGruppo) INNER JOIN Anag_Comuni ON Contratti.CodiceComune=Anag_Comuni.CodiceIstat) INNER JOIN Rel_AgentiAree ON (Contratti.CodiceAgente=Rel_AgentiAree.CodiceAgente) AND (Anag_ContrattoGruppi.CodiceGruppo=Rel_AgentiAree.CodiceArea)) INNER JOIN Rel_AgentiAree AS Rel_AgentiAree_1 ON (Contratti.CodiceAgente=Rel_AgentiAree_1.CodiceAgente) AND (Anag_ContrattoAzioni.CodiceAzione=Rel_AgentiAree_1.CodiceArea)) INNER JOIN Rel_AgentiAree AS Rel_AgentiAree_2 ON (Contratti.CodiceAgente=Rel_AgentiAree_2.CodiceAgente) AND (Anag_ContrattoTariffe.CodiceTariffa=Rel_AgentiAree_2.CodiceArea)
WHERE ((Contratti.DataContratto)>=[@DataInizio] And (Contratti.DataContratto)<=[@DataFine]) And ([@CodiceComune]='' Or Contratti.CodiceComune=[@CodiceComune])
GROUP BY Anag_Comuni.CodiceComune, Anag_Comuni.Comune
ORDER BY Comune;
mentre a livello di codice ho
try
{
DsDati = new DataSet();
OleDbCommand myCommandCP = new OleDbCommand("SP_ReportComuni", dbconn);
myCommandCP.Parameters.Add(new OleDbParameter("@DataInizio", DataInizioRic.Text));
myCommandCP.Parameters.Add(new OleDbParameter("@DataFine", DataFineRic.Text));
myCommandCP.Parameters.Add(new OleDbParameter("@CodiceComune", ddlComuneRic.SelectedValue));
myCommandCP.CommandType=CommandType.StoredProcedure;
OleDbDataAdapter DataAdatp = new OleDbDataAdapter(myCommandCP);
DataAdatp.Fill(DsDati, "ElencoContratti");
}
catch (Exception exc)
{
string debug = exc.Message;
}
Cosa sbaglio??
Grazie mille!
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 29 ott 2008 - 15:50
Non posso fare altro che ripeterti
- Hai provato il SQL Profiler per controllare la chiamata che EFFETTIVAMENTE arriva al DBServer?
Profila e vedi se capisci come mai non funziona.
è l'unico modo sicuro per capire come arriva la chiamata.
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
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 !