Laden...

Report erstellen und dabei bestimmte Einträge filtern

Erstellt von schuppsl vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.361 Views
S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 7 Jahren
Report erstellen und dabei bestimmte Einträge filtern

Hallo liebes Forum.

Ich möchte auf Basis einer MS-SQL Tabelle einen Report erstellen, der mir zuerst tabellarisch die Einträge pro Jahr/Monat/Tag auflistet.
Hierbei soll es aber einige Bedingungen geben.

Im SQL Management Studio habe ich das Script bereits fertig, im Report allerdings hakt es gewaltig.
Per Wizard habe ich einen kleinen Report erstellt und kann mir bereits die Anzahl pro Monat anzeigen lassen.( COUNT )

Allerdings komme ich mit den Ausdrücken nicht klar.

Der bisherigen COUNT Ausdruck lautet:

=Count(Fields!AusweisNr.Value)

Nun sollen aber bestimmte Ausweisnummern nicht mit aufgezählt werden.
Hier zu habe ich bei uncle google nichts gefunden und meine verschiedenen Versuche zeigten auch keine Wirkung:



=Count(Fields!AusweisNr.Value <> "0001234567")
//Gleiche Anzahl

=Count(Fields!AusweisNr.Value <> 1234567)
//Gleiche Anzahl

//Gegenprobe:
=Count(Fields!AusweisNr.Value LIKE "0001234667")
//Gleiche Anzahl


Alle weiteren Versuche wie


=Count(Fields!AusweisNr.Value )<> 1234567

Bringen Fehlermeldungen beim Kompillieren.

Es kommen hier noch weitere SQL Abfragen dazu, damit die Anzahl nachher stimmt.

Ich denke, dass ich was grundsätzliches falsch mache.
Nur was?

P
1.090 Beiträge seit 2011
vor 7 Jahren

Hi ein paar weitere Informationen können nicht schaden.

Oberflächen Technologie (WindowsForms/WPF)?
Was für einen Report benutzt du?
Wie fragst du die Daten ab?

Grundlegend denke ich das du irgendwo ein Select Statment haben wirst, bzw mit angeben kannst. Dort sollte es möglich sein deine Abfrage um ein "where AusweisNr <> "xyz"" zu erweitern.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 7 Jahren
  • Windows Forms
  • Was für einen Report? Keine Ahnung! Erstelle ich einen neuen Report, heißt die Datei Report2.rdlc
  • Die kommen aus einem DataSet, welches per SELECT * alle Daten aus der Datenbank einliest.

Ein normaler SELECT wäre mir am liebsten, aber der Report möchte ja diese komischen Ausdrücke haben?

P
1.090 Beiträge seit 2011
vor 7 Jahren

Schau dir mal den Link an, da sieht es so aus als ob ich den SQL Statment eine Where Klausel mitgeben kann.

MSDN:Walkthrough: Creating a ReportViewer Report

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

3.825 Beiträge seit 2006
vor 7 Jahren

Der Report kann auch auf ein DataSet oder eine Enumeration als Datenquelle zugreifen, so kannst Du mit den Daten vor der Ausgabe machen was Du willst.

Eine Where-Klausel ist aber erstmal der einfachere Weg.

Beachte dass in der RDLC-Datei Username und Kennwort im Klartext stehen, wenn Du den Report mit einem SQL-Server ohne Windows-Authentifizerung verbindest.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 7 Jahren

Kann man denn nicht auf die komplette Datenbank als Datenquelle zugreifen, egal ob auf die Datenbank oder Dataset und nachher die Daten einschränken mit den Ausdrücken?
Das wäre doch weitaus flexibler?

P
1.090 Beiträge seit 2011
vor 7 Jahren

Auch das geht.

MSDN:Gewusst wie: Filtern von Daten in einem Bericht (Visual Studio-Berichts-Designer)

Nur wie so willst du alle Daten aus der Datenbank holen wenn du nicht alle Brauchst.
Grundlegend sollte man nur Daten holen die man auch wirklich braucht. Aus 10 Datensätzen können ganz schnell mal ein paar 100.000 werden. Erstmal dauert, das laden länger, wenn nicht sogar ein Time out oder eine OutOfMemory Exeption kommt.

Wenn du die Abfrage Dynamischer haben willst, schau dir mal EF und IQueryable an. Ob die Reports das Unterstützen kann ich jetzt nicht sagen.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 7 Jahren

Also ich habe es nun gelöst, indem ich eine View mit den entsprechenden Daten erstellt und diese als Datenquelle angegeben habe.

Vielen Dank an alle.