Newsgroup: it.comp.appl.access
Titolo: Ado e stored procedure progetto ADP

Ho la necessità di richiamare tramite ADO una Stored Procedure
Dinamica, che ha un parametro di Input e due di OUTPUT.
Ho provato a fare così, ma non mi ritorna niente.
ALTER PROCEDURE sp_EstraiDati (
@sCodiceCliente Int,
@sNumeroVisite int OUTPUT,
@sTotalePagato int OUTPUT)
AS
SELECT @sSQL = ' SELECT  @SommaImporto =  SUM(ImportoVisita),
@nNumeroVisite = Count(*)  FROM  [dbo].[TabVisite]               WHERE
  (CodiceCliente = ''' + CONVERT(VARCHAR, @sCodiceCliente) + ''')'
EXEC @sSQL 
RETURN
E questa è la funzione di richiamo:
Private Sub FormLancia()
Set cmd = New ADODB.Command
With cmd
   .Name = "Visite"
   .CommandText = "sp_EstraiDati"
   .CommandType = adCmdStoredProc
   .NamedParameters = True
   .Parameters.Append .CreateParameter("@sCodiceCliente", adInteger,
adParamInput,,2)
   .Parameters.Append .CreateParameter("@sNumeroVisite", adInteger,
adParamOutput)
   .Parameters.Append .CreateParameter("@sTotaleVisite", adInteger,
adParamOutput)
   .ActiveConnection = CurrentProject.Connection
End With
cmd.Execute , , adExecuteNoRecords
SommaSconto = cmd("@sNumeroVisite")
SommaIva = cmd("@sTotaleVisite")
End Sub
Dove sbaglio ??
Grazie.

 ha scritto nel messaggio
news:79217c6f.04092...@posting.google.com...

Ho dato una velocissima occhiata al codice.
Prima di eseguire la stored dovresti dare un valore al parametro
@sCodiceCliente in questo modo:
Cmd.Parameters("@sCodiceCliente").Value = nnn
Fai una prima prova e vediamo
Ungi

 ha scritto nel messaggio
news:79217c6f.04092...@posting.google.com...

Ciao Francesco,
L'Sql dinamico eseguito con la EXE non vede le variabili dichiarate nella
Sp.
Prova così
--------------------
ALTER PROCEDURE sp_EstraiDati (
@sCodiceCliente Int,
@sNumeroVisite int OUTPUT,
@sTotalePagato int OUTPUT)
AS
SELECT  @SommaImporto =  SUM(ImportoVisita),
        @nNumeroVisite = Count(*)
FROM  [dbo].[TabVisite]
WHERE CodiceCliente = @sCodiceCliente
RETURN
----------------------
Perchè converti in Varchar  @sCodiceCliente ?
Ciao Giorgio

...

La Stored Procedure così come l'hai impostata l'avevo già verificata è
mi funziona.
Ho il problema di rendere dinamica la Stored per avere più flessibità
in determinate condizioni, e anche per capire le potenzialità
dell'oggetto.
In pratica quella che mi hai esposto, deve diventare dinamica. E'
possibile ?
Grazie.

 Ciao Giorgio
Funziona.Grazie
Vorrei sapere alcune cose:
perchè hai usato N'
perche hai usato nVarChar e non varchar
e per ultimo,come fare per inserire al tuo esempio un parametro di
input del nome della tabella ?
Ciao.

 input del nome della tabella ?
be, questo è semplice dai
-------------------------------
ALTER PROCEDURE sp_EstraiDati (
@sCodiceCliente Int,
@sNomeTabella nVarchar(100),
@sNumeroVisite int OUTPUT,
@sTotalePagato int OUTPUT)
AS
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
SET @SQLString=
    N'SELECT  @sTotPagato =  SUM(ImportoVisita),
              @nNrVisite = Count(*)
      FROM    '+@sNomeTabella+'
      WHERE   CodiceCliente = @sCodCli'
SET @ParmDefinition=
    N'@sCodCli int ,
      @sTotPagato numeric(18,2) OUTPUT ,
      @nNrVisite int OUTPUT'
EXECUTE sp_executesql @SQLString, @ParmDefinition,
                      @sCodCli = @sCodiceCliente,
                      @sTotPagato=@sTotalePagato OUTPUT,
                      @nNrVisite=@sNumeroVisite OUTPUT
RETURN
-----------------------------
Ciao Giorgio