Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Recordset gerarchici

qualcuno ha esperienza coi recrdset gerarchici?
non riesco a fare il report di una query gerarchica con paramentri
grazie
Max

 ha scritto nel messaggio
news:k39f9.85276$pX1.2...@news2.tin.it...

Cosa intendi per recordset gerarchici?
Stai parlando del provider MSDataShape?
                                danilo

...

Allora, ho appena fatto un report che appunto richiede l'esecuzione di
una query con parametri.Per meglio dire richiedeva l'esecuzione di due
query , ma non sono riuscito a eseguire nello stesso SHAPE due qry con
param., Magari qualcun'altro ci è riuscito.
Per prima cosa crea nel tuo db una query (nell'esempio l'ho chiamata
StoredProcedure) con un parametro dal nome *parametro* (naturalmente
puoi cambiare nome) e poi esegui il cod. di seguito.
Verifica il codice (eventuali parentesi mancanti e personalizzazioni
nei parametri della CreateParameter).
Per maggiori info. sul comando SHAPE APPEND
http://www.robertovillari.it/DataShaping/append.htm
.
Bye, guaguanco
Dim cnnShape As ADODB.Connection
Dim cmmShape As ADODB.Command
Dim strConn As String
Dim strShapeSQL As String
Dim rst As ADODB.Recordset
 
Set cnnShape = New ADODB.Connection
    strConn = "Provider=MSDATASHAPE;Data Provider=*il tuo data
provider*
   cnnShape.Open strConn
' Crea la gerarchia
  strShapeSQL = "SHAPE {SELECT * FROM StoredProcedure}" & _
              " APPEND({SELECT * FROM TuaTabella} " & _
              " RELATE Campo1 TO Campo2)AS Recordset"
  Set cmmShape = New ADODB.Command
    cmmShape.ActiveConnection = cnnShape
         cmmShape.CommandType = adCmdText
           cmmShape.CommandText = strShapeSQL
 
     ' Crea il parametro da passare alla stored procedure 
     cmmShape.Parameters.Append _
         cmmShape.CreateParameter("parametro", adVarChar,
adParamInput, 4,    valore)
Set rst = cmmShape.Execute
Set datareport.DataSource = rst
datareport.show

[CUT]
Se è come penso (recordset gerarchici con
MSDatashape) volevo solo dirvi un paio di cose.
Tempo fa ho visto un esempio e mi è piaciuto,
così ho provato a fare qualcosina.
Non mi è sembrato così semplice da gestire, ma funzionava
il problema è che ho letto da qualche parte che la M$ stessa
consiglia di non utilizzare tali metodi che non supporterà
nelle versioni successive (tipo piattaforma .net).
Per il resto vedete voi.
                            danilo

nn so se la microsoft lo supporterà in futuro o meno ma uno dei
programmatori del team di sviluppo ADO afferma in un suo libro di farne uso
xkè anke se sembra complicato il codice viene invece semplificato dall'uso
proprio di query così complesse...
qui ti posto la query, in realtà il problema è di 2 tipi:
1) non riesco a passare i paramentri al dataenvironment o almeno credo dal
momento ke il report seguente basato sulla query non viene generato ma mi
viene restituito 1errore;
2) se faccio la query da codice coi paramentri ottengo un recordset
gerarchico con tutti i suoi trighi e dovrebbero essere proprio questi ad
impedirmi di creare a mano il report (sempre con data report). praticamente
in questo caso non riesco a "bindare" il recordset ottenuto ai controlli del
datareport.
Se il dataenvironmet esegue la query senza i paramentri ma con dei valori
impostati subito ottengo sia il recordset che il report, morale dov'è sta la
fregatura...insomma io credo che il problema possa essere il formato della
data che gli passo in modo errato però...
i parametri sono DataStart, DataEnd e sCodCliente
SHAPE ( SHAPE {SELECT Dipendente, CodiceCommessa, SUM(OreOrdinarie) AS
TotOreOrdinarie, SUM(OreStraordinarie) AS TotOreStraordinarie,
SUM(Trasferta) AS TotTrasferte, SUM(Distanza) AS Totkm, SUM(CostoTrasferta)
AS TotCosti, SUM(AltreSpese) AS TotSpese FROM ElencoOre
WHERE (Data BETWEEN DataStart AND DataEnd )
AND CodiceCliente=sCodCliente
GROUP BY Dipendente, CodiceCommessa, CodiceCliente}  AS cmd3 COMPUTE cmd3,
SUM(cmd3.'TotOreOrdinarie') AS subTOreOrd, SUM(cmd3.'TotOreStraordinarie')
AS subTOreStra, SUM(cmd3.'TotTrasferte') AS subTTrasf, SUM(cmd3.'Totkm') AS
subTkm, SUM(cmd3.'TotSpese') AS subTSpese BY 'CodiceCommessa') AS
cmd3_Raggruppamento COMPUTE SUM(cmd3_Raggruppamento.'subTOreOrd') AS
GTotaleOreOrd, SUM(cmd3_Raggruppamento.'subTTrasf') AS GTotaleOreStra,
SUM(cmd3_Raggruppamento.'subTTrasf') AS GTotaleTrasf,
SUM(cmd3_Raggruppamento.'subTkm') AS GTotalekm,
SUM(cmd3_Raggruppamento.'subTSpese') AS GTotaleSpese, cmd3_Raggruppamento
Grazie a tutti
Max