Ciao a tutti!
Dovrei fare il report di una fattura, stampando l'intestazione che si trova su una tabella ed il dettaglio fattura che si trova in un'altra tabella.
ho provato diverse strade ma non ci sono ancora riuscito, se provo a stampare i dati solo dell'intestazione della fattura e solo del dettaglio funziona, mentre provo a passare i dati al mio data set di entrambe le tabelle non visualizzo nulla.
ho provato 2 soluzioni:
1) nel file dataset1.xsd ho creato 2 datatable, 1 per l'intestazione della fattura e l'altro per il dettaglio della fattura.
ho creato il report associato impostando come orinine dei dati i due datatable e mi sono personalizzato il report con i miei campi.
poi mi sono creato la mia pagina asp.net vb con il seguente codice:
visualizzo il report vuoto, se invece cancello un datatable nel report e eseguo il codice popolando solo un datatable i dati si vedono.codice:Imports System.Data Imports System.Configuration Imports System.Data.SqlClient Imports CrystalDecisions.CrystalReports.Engine Partial Class cism_Report_fattura_acquisto Inherits System.Web.UI.Page Dim sql As String Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim crystalReport As New ReportDocument() crystalReport.Load(Server.MapPath("~/APP/report/fattura_vendita.rpt")) Dim dsIntestazione As DataSet1 = GetData(sql) sql = "SELECT CONTROPARTITE.contropartita1 AS descr, DETTAGLIO_FATTURE.imponibile, CODICI_IVA.iva " & _ "FROM DETTAGLIO_FATTURE INNER JOIN CONTROPARTITE ON DETTAGLIO_FATTURE.n_dettaglio = CONTROPARTITE.id INNER JOIN CODICI_IVA ON DETTAGLIO_FATTURE.n_aliquota = CODICI_IVA.id " & _ "WHERE DETTAGLIO_FATTURE.id_fattura=47291" Dim dsDettaglio As DataSet1 = GetData2(sql) crystalReport.Database.Tables(0).SetDataSource(dsIntestazione) crystalReport.Database.Tables(1).SetDataSource(dsDettaglio) CrystalReportViewer1.ReportSource = crystalReport End Sub Private Function GetData(ByVal query As String) As DataSet1 Dim conString As String = ConfigurationManager.ConnectionStrings("dbConnectionString").ConnectionString Dim cmd As New SqlCommand(query) Using con As New SqlConnection(conString) Using sda As New SqlDataAdapter() cmd.Connection = con sda.SelectCommand = cmd Using dsCustomers As New DataSet1() sda.Fill(dsCustomers, "Fatture_vendita") Return dsCustomers End Using End Using End Using End Function Private Function GetData2(ByVal query As String) As DataSet1 Dim conString As String = ConfigurationManager.ConnectionStrings("dbConnectionString").ConnectionString Dim cmd As New SqlCommand(query) Using con As New SqlConnection(conString) Using sda As New SqlDataAdapter() cmd.Connection = con sda.SelectCommand = cmd Using dsCustomers2 As New DataSet1() sda.Fill(dsCustomers2, "dettaglio_fatt") Return dsCustomers2 End Using End Using End Using End Function End Class
2) ho provato un'altra strada ma sono bloccato alla fine, mi spiego...
Nel file dataset1.xsd mi sono creato un tableadapter selezionando il mio db sql e o praticamente creato la query con le due tabella interessate impostando la relazione tra di loro.
ho creato il report selezionato come origine dati il tabledapter, ma non so in che modo implementare il mio codice asp.net per richiamare il report ed eventualmente passargli id della fattura.
ho provato a trovare una guida ma purtroppo non sono riuscita a trovarla in vb ma solo in C#.
Io o bisogno di stampare un report contenente due tabelle, poi se uso un datatable per recuperare i dati manualmente impostandomi una query oppure usare un tableadapter che prende i dati passando solo il paramentro del id non importa, basta che qualcuno mi spieghi come posso fare, va bene anche una guida e stanotte me la studio.
Graziee
![]()

Rispondi quotando
