Newsgroup: it.comp.appl.access
Titolo: Stored procedure con parametri e report

Ciao a tutti,
Ho una SP che mi filtra dei dati in base ad un intervallo di tempo.
Nel progetto di AccessXP ho sia una maschera che un report basati su
questa SP. Nessun problema nel passare i due parametri (@start e @end)
alla SP con la maschera, ma non c'è verso di passarli al report: ogni
volta che tento di aprire il report in anteprima o in stampa mi
compaiono le due mascherine per la richiesta di immissione dei due
parametri!
La procedura che seguo è questa:
- dalla maschera principale apro la maschera "scadenze" passandogli
come argomento una stringa con le due date (prese da due textbox)
separate da una virgola
- la maschera "scadenze" splitta le due date e, tramite la proprietà
InputParameters, le passa alla SP che mi visualizza i dati corretti
- nella maschera c'è un pulsante che fa esattamente la stessa cosa con
il report, ovvero gli passa come argomento una stringa con le due date
separate da una stringa
- il report, nell'evento su apertura (Report_Open), fa lo split delle
due date e le dovrebbe passare alla SP sempre con la proprietà
InputParameters, che però pare non funzionare...
Suggerimenti?
Grazi a tutti!
--
Matteo Palmieri - Cybercreations
www.cybercreations.it

 InputParameters, che però pare non funzionare...
Prova l'evento "su attivazione" che viene eseguito un po dopo l'evento di
apertura.
Poi puoi anche provare vare coso dopo aver impostato i parametri di input:
* requery / refresh del report
* set me.recordset=me.recordset
Se non ti trova i parametri potresti provare a creare dei controlli nascosti
con gli stessi nomi dei parametri sulla maschera (parametro @pippo -->
controllo pippo; togli la chiocciola)
Domanda: ma la stringa dei parametri di input, perchè non la imposti
design-time?
Fai in modo che la stringa dei parametri di input faccia riferimentop
direttamente a dei controlli sulle maschere, e sei a posto.
Guarda questo mio messaggio in proposito:
http://groups.google.com/groups?&hl=it&lr=&ie=UTF-8&oe=UTF8&selm=adl4ba%24p1
l%241%
40newsreader.mailgate.org
&rnum=28
Ciao, Max

Vabbeh, visto che il link si spezza... riposto tutto :-) Ciao, Max
=====================================================================
Pensando che possa servire a molti, spiego brevemente come usare Stored
Procedure Parametriche o User Defined Function Parametriche in un Progetto
ADP.
Basi:
Ho un DB su SQL Server 2000 con definita la seguente SP:
CREATE PROCEDURE dbo.ParaSP1(@par1 nvarchar(100))
AS SELECT     CAP AS Expr3, Provincia AS Expr4, Localita AS Expr5, Via AS
Expr6
FROM         dbo.CAP
WHERE     (Localita LIKE N'%' + ISNULL(@par1, '') + N'%')
GO
nello stesso DB ho definita la seduent UDF:
CREATE FUNCTION dbo.ParaFN1
  (@Par1 varchar(100))
  RETURNS TABLE
  RETURN (
     SELECT     CAP AS Expr3, Provincia AS Expr4, Localita AS Expr5, Via AS
Expr6
     FROM         dbo.CAP
     WHERE     (Localita LIKE N'%' + ISNULL(@par1, '') + N'%')
  )
Poi ho un progetto ADP che si collega al mio DB su SQL Server.
Nel mio progetto posso aprire le sopracitare SP ed UDF in 6 modi diversi,
vediamo come:
Ho una form "Z_TEST_ParaSP2" che contiene un controllo TextBox chiamato
"Par1" (ESATTAMENTE come il parametro nelle UDF ed SP)
Sull'evento "dopo aggiornamento" della textbox aggiorno tutti gli altri
controlli, che saranno 2 caselle di riepilogo e 4 subform.
===========================
1) Casella di riepilogo basata su SP
Origine Riga=ParaSP1
Non serve altro, Access si accorge che la SP usa un parametro @Par1, e cerca
un controllo "Par1" sulla form corrente, lo trova e sostituisce il valore.
===========================
2) Casella di riepilogo basata su UDF
Origine Riga=ParaFN1
Non serve altro, Access si accorge che la UDF usa un parametro @Par1, e
cerca un controllo "Par1" sulla form corrente, lo trova e sostituisce il
valore.
===========================
3) Sottomaschera continua basata su SP
Origine Record=ParaSP1
Parametri di Input= @par1=[Forms]![Z_TEST_ParaSP2]![par1]
Devo compilare a mano il campo parametri di input, cos' dice al DB che
valore assegnare a @par1
===========================
4) Sottomaschera continua basata su UDF
Origine Record=ParaFN1
Parametri di Input= @par1=[Forms]![Z_TEST_ParaSP2]![par1]
Devo compilare a mano il campo parametri di input, cos' dice al DB che
valore assegnare a @par1
===========================
5) Sottomaschera continua basata su SP
Origine Record=EXEC Z_ParamSP1 @[Forms]![Z_TEST_ParaSP2]![par1]
Parametri di Input= ? [AllowDefault] = [Forms]![Z_TEST_ParaSP2]![par1]
Richiamop la SP con la sitassi tipo query analizer, NOTA CHE il campo
parametri di input VIENE COMPILATO AUTOMATICAMENTE, cosa che trovo
estremamente comoda.
===========================
6) Sottomaschera continua basata su UDF
Origine Record=SELECT * FROM dbo.ParaFN1(@[Forms]![Z_TEST_ParaSP2]![par1])
Parametri di Input= ? [AllowDefault] = [Forms]![Z_TEST_ParaSP2]![par1]
Richiamop la SP con la sitassi tipo query analizer, NOTA CHE il campo
parametri di input VIENE COMPILATO AUTOMATICAMENTE, cosa che trovo
estremamente comoda.
===========================
Naturalmente per far funzionar eil tutto č necessario impostare altri
parametri nei controlli (numero di colonne nelle caselle di riepilogo,
disegnare 4 sottomaschere con tutti i campi ecc...)
Personalmente ritengo che le soluzini 5 e 6 siano le piů comode, in quanto
per funzionare necessitano solo di scrivere 1 sola volta il nome per esteso
del controllo contenente il parametro.
Nota che nelle soluzioni 1 e 2 č necessario che il parametro nella SP/UDF ed
il nome del controllo coincidano.
Aggiungo 2 articoli Microsoft dai quali ho preso spunto per fare questi
esperimenti:
ACC2002: How to Use Parameterized Combo Boxes in an Access Project (Q281870)
ACC2002: How to Use Form Parameters in the RecordSource Property in an
Access Project (Q278400)
Ultima nota, quanto esposto sopra funziona con SQL Server 2000 ed Access
2002 (o XP che dir si voglia), non ho provato su altre versioni.
Ciao a tutti, e buona programmazione :-)
Max

 design-time?
Alla fine gli ho fatto prendere i parametri da due controlli in una
maschera. In ogni caso nel frattempo avevo fatto un po' di ricerche in rete
sull'argomento e pare che sia un problema diffuso quello di impostare i
parametri da codice.
Grazie 1000
