Announcement

Collapse
No announcement yet.

Reporting Services: Datasource

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Reporting Services: Datasource

    Hallo!

    Bin am verzweifeln mit dem Reporting Services:

    Wenn ich das Form mit meinen Report mit folgendem Code starte, bekomme ich den Report wie gewünscht.

    Code:
    
            Dim cmd As New SqlCommand("SELECT Name, Vorname,Strasse,  P_Ort,  from tblAdressen", conn)
            Dim ds As New DS_PER_Adressenliste()
            Dim da As New SqlDataAdapter(cmd)
            Dim dt As New DataTable("dtAdressen")
            da.Fill(ds, "dtAdressen")
           
    'nur zur Kontrolle
            DataGridView1.DataSource = dt
    
    
            Dim mybs As New BindingSource
    
            mybs.DataSource = ds
            mybs.DataMember = "dtAdressen"
    
            Dim rds1 As New ReportDataSource("DataSet1")
    
    
    
            rds1.Value = mybs
            ReportViewer1.LocalReport.DataSources.Add(rds1)
            ReportViewer1.LocalReport.ReportPath = "Report2.rdlc"
    
    
            Me.ReportViewer1.RefreshReport()
    Wenn ich nun statt des Tableadapters die datatable mit einer Funktion, die Daten aus einer Stored Procedure abruft, zeigt mir der Report keine Daten an, sondern nur die Kopfzeile. Das zur Kontrolle hinzugefügte Datagridview aber zeigt mir, dass Daten ankommen. An der Stored Procedure kann es also nicht liegen.

    Was mache ich falsch? Irgendwas mit dem dataset und der datatable?

    Code:
    Dim ds As New DS_PER_Adressenliste()
            Dim dt As New DataTable("dtAdressen")
            ds.Tables.Add("dtAdressen")
    
            dt = DataAccessComponents.ExecuteDataTable("sp_PER_AdressenlistePRM")
    
    
        
           
    'nur zur Kontrolle
            DataGridView1.DataSource = dt
    
    
            Dim mybs As New BindingSource
    
            mybs.DataSource = ds
            mybs.DataMember = "dtAdressen"
    
            Dim rds1 As New ReportDataSource("DataSet1")
    
    
    
            rds1.Value = mybs
            ReportViewer1.LocalReport.DataSources.Add(rds1)
            ReportViewer1.LocalReport.ReportPath = "Report2.rdlc"
    
    
            Me.ReportViewer1.RefreshReport()

  • #2
    Hallo,

    übergib dem Repost das DataTable direkt, also ohne den (unnötigen) Zwischenschritt mit der BindingSource - diese wäre eher für das DGV gedacht


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hat geklappt!

      Vielen Dank für die schnelle und sehr hilfreiche Antwort.

      Hab wie vorgeschlagen den Bindingsource - Kram auskommentiert und nur folgende Zeile geändert:

      Code:
      rds1.Value = dt
      Daher mal ne Frage:
      Den Code mit der Binding Source hatte ich aus der guten Literatur. Hatt auch funktioniert (solange ich nicht die Funktion mit der SP verwendet habe) , daher habe ich mir keine Gedanken gemacht.

      Aber was soll das dann mit der Bindingsource?
      Welchen Sinn hätte es überhaupt?

      Comment


      • #4
        Hallo,

        die BindingSource ist wie der Name suggeriert für Datenbindungsszenarien gedacht. In deinem Beispiel könnte die BindingSource als Datenquelle für das DataGridView (DGV) verwendet werden.

        Nähere Infos entnimm bitte der Doku dazu und/oder What is a BindingSource and why do I need it?


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Danke für die schnelle Hilfe und den Link!

          Comment

          Working...
          X