Stored procedure in access2003

mercoledì 24 maggio 2006 - 09.49

mo70 Profilo | Junior Member

Ciao a tutti,
ho creato la query q_aziende che deve filtrare i dati in base alla query q_filtro_aziende. La sintassi sql funzionante è la seguente:
SELECT t_avvisi.cliente_media, t_avvisi.cliente_rcs
FROM t_avvisi
GROUP BY t_avvisi.cliente_media, t_avvisi.cliente_rcs
HAVING (((t_avvisi.cliente_media) In (select cliente_media from q_filtro_aziende)))
ORDER BY t_avvisi.cliente_media, t_avvisi.cliente_rcs
WITH OWNERACCESS OPTION;

ho provato a sostituire l'istruzione "select cliente_media from q_filtro_aziende" con il parametro [@filtro_azienda] e in questo caso non mi restituisce nessun record. Come posso risolvere? Ho bisogno di utilizzare questa stored procedure in una pagina asp.net (1).

Grazie.
Ciao

lbenaglia Profilo | Guru

>SELECT t_avvisi.cliente_media, t_avvisi.cliente_rcs
>FROM t_avvisi
>GROUP BY t_avvisi.cliente_media, t_avvisi.cliente_rcs
>HAVING (((t_avvisi.cliente_media) In (select cliente_media from
>q_filtro_aziende)))
>ORDER BY t_avvisi.cliente_media, t_avvisi.cliente_rcs
>WITH OWNERACCESS OPTION;

Ciao mo70,

perché specifichi il criterio di ricerca nella clausola HAVING?
La tua query effettua l'aggregazione SU TUTTE le righe della tabella t_avvisi e poi va a filtrare solo quelle che soddisfano la condizione t_avvisi.cliente_media IN (select cliente_media from q_filtro_aziende).
Secondo me otterresti lo stesso risultato ma in un tempo inferiore filtrando a monte le righe, spostando il criterio di ricerca nella clausola WHERE:

SELECT cliente_media, cliente_rcs FROM t_avvisi WHERE cliente_media IN ( SELECT cliente_media FROM q_filtro_aziende ) GROUP BY cliente_media, cliente_rcs ORDER BY cliente_media, cliente_rcs WITH OWNERACCESS OPTION;

>ho provato a sostituire l'istruzione "select cliente_media from
>q_filtro_aziende" con il parametro [@filtro_azienda] e in questo
>caso non mi restituisce nessun record.

Qua non ti seguo più.... non puoi parametrizzare una intera SELECT.
Posta la struttura delle due tabelle, alcune righe di prova ed il risultato che vorresti ottenere.

>Grazie.
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

mo70 Profilo | Junior Member

Ciao,
ti posto il codice della pagina asp.net (è qui che devo arrivare....), ho provato ma così non funziona, sicuramente ho scritto qualche boiata....
praticamente vorrei che la query principale (strsql) mi restituisse i dati in base alle variabili var_data_inizio e var_data_fine limitatamente alle aziende già filtrate nella query q_filtro_aziende (strsql_azienda). Dentro access funziona, però da asp.net no:

strsql_azienda="select cliente_media from q_filtro_aziende"
strsql="SELECT q_avvisi.* FROM q_avvisi WHERE (((q_avvisi.data_avviso) Between #" & var_data_inizio & "# And #" & var_data_fine & "#)AND ((q_avvisi.cliente_media) in(" & strsql_azienda & ")))ORDER BY q_avvisi.data_avviso, q_avvisi.PR"

cmd_azienda=new OleDbCommand(strsql_azienda,objconn)
cmd=New OleDbCommand(strsql, objconn)

objconn.open()
........

Grazie 1000

ciao

lbenaglia Profilo | Guru

>ti posto il codice della pagina asp.net (è qui che devo arrivare....),

Non basta. Se vuoi che qualcuno ti aiuti devi postare TUTTI i dati che ti ho chiesto nel precedente post.
Una query non significa niente senza le tabelle di origine, dei dati di prova ed il result set che si desidera ottenere.

>strsql_azienda="select cliente_media from q_filtro_aziende"
>strsql="SELECT q_avvisi.* FROM q_avvisi WHERE (((q_avvisi.data_avviso)
>Between #" & var_data_inizio & "# And #" & var_data_fine & "#)AND
>((q_avvisi.cliente_media) in(" & strsql_azienda & ")))ORDER BY
>q_avvisi.data_avviso, q_avvisi.PR"

Impara a scrivere le query in modo ordinato, senza tutte quelle parentesi che creano più danni che altro (butta via il QBE di Access).
var_data_inizio e var_data_fine come sono formattate? Ti ricordo che se crei un comando SQL dinamico come quello, le date devono essere specificate nel formato americano (#mm/dd/yyyy#).
Inoltre non ho capito perché la query "select cliente_media from q_filtro_aziende" debba essere dinamica...

>Grazie 1000
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5