Filterproblematik Chart Reportviewer

  • VB.NET
  • .NET (FX) 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Lippi.

    Filterproblematik Chart Reportviewer

    Hallo liebe Forengemeinschaft,

    ich arbeite aktuell an einer kleinen Auswertung.
    Den Aufbau habe wie hier beschrieben aufgebaut: ReportViewer-Tutorial für Anfänger

    In dieser soll aus Daten die in eine Access Datenbank eingetragen wurden ein Bericht über den "Report Viewer" erstellt werden.
    Die Parameterübergabe klappt soweit problemlos.

    Bei den Charts habe ich leider zwei Probleme.
    • es sind 5 Charts
    • einer ohne Filter - richtige Darstellung.
    • jeweils 2 greifen auf die selbe Spalte zu. Die einzige Unterscheidung liegt im ausgewähltem Filter.
    • Es wird gefiltert ob der Text in einer anderen Spalte = Textwert oder <> Textwert ist.
    • ! Bei den ersten beiden Charts, die auf die Spalte NAW zugreifen erfolgt die Auswertung wie über die Filter festgelegt.
    • ! Bei den anderen beiden Charts, die auf die Spalte Outcome zugreifen, und den selber Filter verwenden, ignoriert er beim Ersten scheinbar den Filter und wertet alle verfügbaren Inhalte aus, beim Zweiten erscheint "Keine Daten verfügbar"

    Via SQL Abfrage erhalte ich die entsprechenden richtigen Ergebnisse.

    SQL-Abfrage

    1. SELECT * FROM TCPR WHERE (Anleitung <> 'nicht durchgeführt')


    Ich habe es mit anderen Filtern versucht, das klappt soweit ohne Probleme.

    Eine Datum Filterung über das Dataset erfolgt noch nicht. Dies wollte ich im Anschluss ergänzen.

    Vielleicht hat einer / eine von euch den entscheidenden Hinweis / Tipp für mich, den ich übersehe.

    Grüße,
    Lippi
    Kannst du bitte ein kleines Projekt dazu anlegen und hochladen, dass die Probleme zeigt.

    Weil da liegt das Problem tiefer im Report und ohne Kenntnis des Datenmodeles kann man hier nichts näheres dazu sagen...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()

    Hallo VB1963,

    vielen Dank für die schnelle Antwort.

    Hier die geschnittene Arbeitsmappe.
    Bitte nicht über die Abfragen wundern, musste einzelne Sachen raus nehmen und entsprechend verkürzt wo anders einbinden.
    • Beim Start wird der Bericht geöffnet. Dort muss nur in die TXT Box bei erstellte Faxberichte was eingetragen werden.
    • Jahr und Zeitraum sind aktuell bezüglich der Charts egal, da ich dort noch keine auf den Zeitraum gefilterte Ansicht habe.
    • Im Release Ordner ist eine offene Access Datenbank. Die Für den Bericht wichtigen Werte stehen zum Abgleich in der Tabelle TCPR

    Für Rückfragen stehe ich selbstverständlich zur Verfügung.
    Dateien
    • Testmappe.rar

      (4,23 MB, 221 mal heruntergeladen, zuletzt: )
    Ich finde im Report bei deinen Chartobjekten niergends einen angegebenen Filter in der Filters-Eigenschaft, wo du deine Daten gesondert darstellen kannst.
    Wenn ich im 4. Chart, wo keine Daten ausgegeben werden, den Filter setze - werden die gewollten Daten richtig ausgegeben! (siehe Bildchen...)

    Mich wundert es, dass die Daten der ersten beiden Charts verschieden ausgegeben werden - übersehe ich da irgend etwas im Hintergrund?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VB1963“ ()

    Hallo VB1963,
    vielen Dank für deine schnelle und Hilfreiche Antwort.

    Ich hatte den Filter bei den Reihenfeldern gesetzt. Das wird der Fehler gewesen sein.

    Dann kann ich mich jetzt um die gefilterten Daten aus dem Dataset kümmern.

    Ich danke dir und wünsche noch einen schönen Sonntag.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Lippi“ ()

    Ich habe kurz deinen Code angeschaut - da sind mir einige Ungereimtheiten aufgefallen, die ich dir sagen möchte:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. #Region "Jahre laden"
    2. Private Sub Jahreladen()
    3. Try
    4. con.Close()
    5. con.Open()
    6. cmd.CommandText = "select * from TCPR"
    7. reader = cmd.ExecuteReader()
    8. Do While reader.Read()
    9. Dim Datum As String = (CDate(reader.Item("Datum").ToString).ToString("yyyy"))
    10. If Druckjahr_CB.Items.Contains(Datum) = False Then
    11. Druckjahr_CB.Items.Add(Datum)
    12. End If
    13. Loop
    14. reader.Close()
    15. con.Close()
    16. Catch ex As Exception
    17. MsgBox(ex.Message)
    18. End Try
    19. End Sub
    20. #End Region
    ich denke - besser so:

    VB.NET-Quellcode

    1. #Region "Jahre laden"
    2. Private Sub Jahreladen()
    3. Using con As New OleDb.OleDbConnection With {.ConnectionString = Übersicht.con_text}
    4. con.Open()
    5. Using cmd As New OleDb.OleDbCommand With {.CommandText = "SELECT DISTINCT YEAR(Datum) AS _Year FROM TCPR", .Connection = con}
    6. Using reader = cmd.ExecuteReader()
    7. Druckjahr_CB.Items.Clear()
    8. Do While reader.Read()
    9. Druckjahr_CB.Items.Add(reader.Item("_Year"))
    10. Loop
    11. End Using
    12. End Using
    13. End Using
    14. If Druckjahr_CB.Items.Count > 0 Then Druckjahr_CB.SelectedIndex = 0
    15. End Sub
    16. #End Region
    • SQL-Command präzisieren
    • Using verwenden
    • Try/Catch-Zweig entfernen
    • Du hast noch den Microsoft.VisualBasic-Namespace importiert
    • Im Dataset hast du in der Tabelle TCPR bei der Spalte Nummer und Einsatznummer den Datentyp String - nehme doch besser Integer
    Die ersten 3 Punkte ziehen sich durch den gesamten Code...
    Vlt. helfen dir da meine Bemerkungen...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()