Sottoreport

giovedì 07 luglio 2005 - 19.03

wolf Profilo | Junior Member

ciao a tutti, vi anticipo che sono ormai disperato!
Ho creato dei report basati su file di tipo ttx. In visula studio, poi, ho scritto il seguente codice per ogni report
dim connsql as new sqlconnection
dim str as string = "SELECT * FROM tab1"
dim myRep As New ReportDocument
Dim RepPath As String = Server.MapPath("report.rpt")
Dim DA As New SqlDataAdapter(str, connSql)
dim DS as new dataset
DA.Fill(DS, "stampa")
myRep.Load(RepPath)
myRep.SetDataSource(DS.Tables("stampa"))
e tutto funziona bene.
Ho inserito in questo report un sottoreport ( che ha lo stesso codice scritto sopra ma riferito ad una tabella diversa), creato il parametro ma ogni volta che apro il documento mi da il sottoreport vuoto.
Ormai è più di un mese che consulto manuali, cerco materiale ma non riesco a venirne a capo. Mi potete scrivere del codice, per favore, per farmi capire come caspita fare? Grazie 1000 .
myRep.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, True, "prova")

freeteo Profilo | Guru

ciao wolf,
ma tu da quando hai aggiunti il sottoreport gli dai il datasource anche a lui giusto?
tipo: myrep.subreports["mio"].database.setdatasource....

e anche cosi non funziona?

wolf Profilo | Junior Member

Grazie Teo per l'aiuto ma il mio problema è che non ho proprio capito come gestire il sottoreport tramite codice. E' da pochissimo che uso crystal report e con tutto il materiale che ho trovato non sono riuscito a cavare un ragno dal buco. Vorrei trovare, se è possibile, un esempio completo dove tramite dataset e query popolo un report con sottoreport. Grazie

igor Profilo | Junior Member

ciao wolf,
un paio di domande, ma il report e il sotto report sono creati nello stesso documento rpt o in documenti diversi??
il sottoreport deve essere legato in qualche modo al report principale?? per esempio far vedere i dettagli di una fattura??
io ho un report con tre sottoreport e gestisco la cosa come segue

Dim rpDoc As New ReportDocument
Dim subRpDoc As New ReportDocument

rpDoc.Load(Environment.CurrentDirectory & "\..\Reports\rpt301.rpt")
rpDoc.SetDatabaseLogon("user", "pwd", "(local)", "Db")
rpDoc.RecordSelectionFormula = "id = 10"

'POI per ogni sottoreport
subRpDoc = rpDoc.OpenSubreport("rpt301Invoices")
Dim subQuery_Invoices = " ...condizioni ... "
subRpDoc.RecordSelectionFormula = subQuery_Invoices & " and {rpt_301_Invoices.ID}={?Pm-rpt_301_Customers.ID}"
------

Nell'ultima riga filtro specifico che l'id dei dati del sottoreport deve essere uguale a quello del parametro.... che tu hai creato.
Fai attenzione che il ? lo devi mettere davanti al nome del paramtero che tu hai creato... altrimenti non funziona.

Inoltre controlla i legami tra report e sottoreporto con andando sul sottoreport, tasto destro modifica collegamenti sottoreport

igor


wolf Profilo | Junior Member

Grazie Igor per l'aiuto ma non ho capito un paio di cose:
1. rpDoc.RecordSelectionFormula = "id = 10" -- il valore 10 indica qualcosa oppure è arbitrario?
2. Dim subQuery_Invoices = " ...condizioni ... " -- è una query di selezione a cui ci aggiungi alla fine l'opzione WHERE con & " and {rpt_301_Invoices.ID}={?Pm-rpt_301_Customers.ID}"
Scusa per la banalità delle mie domande ma mi sto perdendo in un bicchiere d'acqua.

igor Profilo | Junior Member

Ciao Wolf,
allora il valore 10 é arbitrario.... metti quello che hai bisogno....

Dim subQuery_Invoices = " ...condizioni ... "
questa é una stringa che dove specifichi delle condizioni (senza clausa where) alla quale concateno poi un AND con la clausula di legame tra il report e il sub report....
Saluti igor

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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5