Newsgroup: it.comp.lang.visual-basic
Titolo: ADO e query con parametri

Dev'essere il mese delle domande, questo :-)
Ho da recuperare dei dati contemporaneamente da diverse tabelle, e invece di
fare piu' query ho deciso di provare con un metodo (per me) nuovo.
La query di lettura dati e' la seguente:
DECLARE @ProxLettera datetime
DECLARE @ProxRichiamo datetime
DECLARE @DataRichiesta datetime
DECLARE @DataUltimaMod datetime
DECLARE @DataUltimoCont datetime
DECLARE @TotContatti int
SET @ProxLettera = (SELECT MAX(DataLettera) FROM Contatti WHERE
IDCliente='')
SET @ProxRichiamo = (SELECT MAX(DataRichiamo) FROM Contatti WHERE
IDCliente='')
SET @DataRichiesta = (SELECT MAX(DataRichiesta) FROM Richieste WHERE
IDCliente='')
SET @DataUltimaMod = (SELECT DataModifica FROM Anagrafica WHERE
ClientiJoin='')
SET @DataUltimoCont = (SELECT MAX(Data) FROM Contatti WHERE IDCliente='')
SET @TotContatti = (SELECT COUNT(IDContatto) FROM Contatti WHERE
IDCliente='')
SELECT @ProxLettera AS 'DataLettera', @ProxRichiamo AS 'DataRichiamo',
@DataRichiesta AS 'DataRichiesta', @DataUltimaMod AS 'DataModifica',
@DataUltimoCont AS 'DataContatto', @TotContatti as 'TotContatti'
La procedura seguente dovrebbe leggere i dati
Private Sub VisualizzaStatisticheCliente(strIDCliente As String)
 
    Dim strQuery As String
    Dim objCommand As ADODB.command
 
    ' Qui prende la query da eseguire
    strQuery = QueryStatCliente
 
    ' La query di template ha '' dove devo inserire il codice del cliente.
Sostituisco
    strQuery = Replace(strQuery, "''", "'" & strIDCliente & "'")
 
 
 
Di primo acchito avevo provato semplicemente ad aprire un recordset usando
quella query (recDati.Open strQuery) ma non mi ritorna nessun record,
laddove invece Query Analyzer me ne ritorna -giustamente- uno.
Vedendo su deja, mi pare che il metodo corretto da seguire sia l'uso dei
Command, ma mi ci sono inceppato. Il codice che segue e' quello che ho
provato, ma mi restituisce tutti i parametri impostati a Null:
 
    Set objCommand = CreateObject("ADODB.Command")
    With objCommand
        .CommandText = strQuery
        .CommandType = adCmdText
        .ActiveConnection = gconDb
        .Parameters.Append .CreateParameter("ProxLettera", adDate, adParamOutput)
        .Parameters.Append .CreateParameter("ProxRichiamo", adDate, adParamOutput)
        .Parameters.Append .CreateParameter("DataRichiesta", adDate, adParamOutput)
        .Parameters.Append .CreateParameter("DataUltimaMod", adDate, adParamOutput)
        .Parameters.Append .CreateParameter("DataUltimoCont", adDate, adParamOutput)
        .Parameters.Append .CreateParameter("TotContatti", adInteger,
adParamReturnValue)
        .Execute
        txtStatLettera.Text = "" & .Parameters("ProxLettera")
        txtStatContatto.Text = "" & .Parameters("ProxRichiamo")
        txtStatDataRich.Text = "" & .Parameters("DataRichiesta")
        txtStatUltimaMod.Text = "" & .Parameters("DataUltimaMod")
        txtStatUltimoCont.Text = "" & .Parameters("DataUltimoCont")
        txtStatNumCont.Text = "" & .Parameters("TotContatti")
    End With
Dov'e' che sbaglio? O_o
--------------------------------
Inviato via 
http://usenet.libero.it

Ti pongo una domanda forse stupida, ma non si capisce
bene il tio codice - tanto più che affermi che quello che
fai vedere è per te un metodo nuovo -, o forse ho dormito poco
- sono andato a letto alle 2 e alle 8 ero già in piedi.
Quella che tu mostri è una sp. L'hai salvato o speravi di
pescare i dati dal nulla
-- 
Saluti
Andrea Moro

 ha
scritto:

In realta' speravo che l'oggetto command fosse in grado di eseguirla da se'
senza averla salvata sul server, ma se qualcuno mi spiega come passargli
anche il parametro di input...sarei ben felice di salvarla come SP :-)


 anche il parametro di input...sarei ben felice di salvarla come SP :-)
 Si riferisce ad una pagina ASP però il codice è in VBScript e va bene anche
per il VB
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q164/4/85.asp&NoWebContent=1
Ciaooo
