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:
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
visualizzo il report vuoto, se invece cancello un datatable nel report e eseguo il codice popolando solo un datatable i dati si vedono.
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