Ich muss einen dynamischen Berichtsersteller in ASP.NET codieren, wo soll ich anfangen?

8

Ich habe die Aufgabe, einen dynamischen Berichtsersteller zu erstellen, um unser aktuelles Produkt zu erweitern, damit unsere Benutzer relativ einfach einen nützlichen Bericht erstellen können, der Daten aus den Eingaben in das System zeichnet. Derzeit passen wir diese Berichte manuell an, wobei ein Entwickler (ich) die Anforderungen des Berichts (Felder, Gesamtsummen, Prozentsätze usw.) annimmt und die Ergebnisse als relativ interaktive Seite veröffentlicht, die einen Drilldown ermöglicht 'für weitere Informationen in den Datensatzzeilen usw.

Die Berichte sind nicht sehr kompliziert, aber sie sind so weit eingebunden, dass das programmatische Generieren dieser Berichte nicht möglich erscheint. Ich habe das Gefühl, eine Schnittstelle zu erstellen, die es den Benutzern ermöglicht, das Aussehen des Berichts anzupassen, sollte nicht zu schwierig sein, obwohl sie an sich selbst beteiligt ist. Wo ich ratlos bin, ist die Schaffung einer Schnittstelle, die es Benutzern, die absolut keine "Programmierkenntnisse" besitzen, ermöglicht, problemlos die SQL-Abfragen zu generieren, die die benötigten Informationen abrufen.

Tatsächlich müssen sie in der Lage sein, diese Abfragen zu erstellen und auf die Eingeweide ihrer eingegebenen Daten zuzugreifen, ohne jemals zu wissen, was sie wirklich tun. Ich fühle, dass dies so funktioniert, wie es erforderlich ist. Die Erstellung des Berichts muss so unähnlich von Magie wie möglich sein. Der Benutzer sollte in der Lage sein, das, was er / sie benötigt, aus den möglichen Datensätzen zu ziehen und abzulegen und auf magische Weise einen Bericht zu erstellen.

Ich bin natürlich bereit für die Herausforderung, aber ich weiß wirklich nicht, wo ich anfangen soll. Sobald ich die Gänge in Bewegung setze, ist die Lösung einzelner Probleme "einfach" (eigentlich eher Teil des Prozesses), aber der Start war schwierig und frustrierend. Wenn mir jemand eine Wegbeschreibung geben kann, habe ich keine Angst davor, die Stunden einzuplanen. Vielen Dank für Ihre Zeit und ich freue mich auf einige positive Vorschläge.

    
Francisco Garcia 28.12.2012, 21:51
quelle

5 Antworten

4

Ich wurde mit so etwas beauftragt. Mein Ratschlag: Tu es nicht. Sofern die erforderlichen Berichte nicht extrem einfach sind und Ihre Benutzer sich nicht darum kümmern, wie der Bericht aussieht, wird viel Zeit für die Implementierung benötigt. Wenn Sie Ihr Team aus einer einzelnen Person angeben, tun Sie es einfach nicht. Es wäre billiger für Sie (auch auf lange Sicht), einen Junior-Entwickler oder Praktikanten einzustellen oder etwas, um diesen Teil des Jobs zu bewältigen.

Jetzt gibt es ein paar verschiedene Report Designer. Ich habe keine gesehen, die komplett auf einer Webseite arbeiten, und alle sangen ziemlich schlecht aus der Nicht-Programmiererperspektive.

Nun gibt es Möglichkeiten, dies zu umgehen. Die meisten Leute, die diese Art von Berichten wünschen, wissen, wie man mit Microsoft Access arbeitet. Sie können ihr Wissen dazu nutzen, um eigene Berichte zu erstellen. Dies ist jedoch nicht trivial, da Sie nicht möchten, dass sie sich nur mit Ihrer Datenbank verbinden. Also, hier ist was ich empfehle:

  1. Erstellen Sie eine herunterladbare Datenbank, die mit Access
  2. kompatibel ist
  3. Stellen Sie sicher, dass die heruntergeladene Datenbank "einfach" zu bearbeiten ist. Dies bedeutet, Daten zu duplizieren und viele Dinge zu demormalisieren
  4. Stellen Sie sicher, dass Sie nichts Vertrauliches in der herunterladbaren Datenbank hinterlassen (Passwörter, interne Dinge, die sie nicht sehen sollten, usw.)
  5. Und schließlich, stellen Sie sicher, dass sie es auf eine sichere Weise herunterladen können und dass es performant ist. Unter Umständen müssen Sie Ihren Nutzern mitteilen, dass die herunterladbare Datenbank nur einmal pro Woche oder Monat "synchronisiert" wird, da es relativ teuer ist, diese in Echtzeit zu synchronisieren
Earlz 28.12.2012 22:04
quelle
4

Sehen Sie sich an, was Data Warehouses tun (z. B. Das Data Warehouse-Toolkit ). Sie erstellen mehrere grundlegende Tabellen, die sehr breit sind, eine Menge redundanter Daten enthalten und einen bestimmten Aspekt der Datenbank abdecken.

Ich würde mehrere so große Ansichten erstellen und die Benutzer eine einzelne Ansicht als Grundlage für einen dynamischen Bericht auswählen lassen. Sie können dann die anzuzeigenden Spalten auswählen, sortieren und gruppieren. Sie können jedoch keine zusätzlichen Tabellen oder Ansichten auswählen.

Natürlich muss eine typische Ansicht wirklich alles abdecken, was einen bestimmten Aspekt der Datenbank betrifft. Nehmen wir an, Sie haben eine Bestellartikel Ansicht. Eine solche Ansicht würde alle Elemente aller Aufträge enthalten, die Hunderte von Spalten mit folgenden Angaben enthalten:

  • Die Bestell-Produkt-ID, Produktname, regulärer Preis, Rabatt, bezahlter Preis, Preis inkl. MwSt. der zugehörige Teil der Versandkosten etc.
  • Die Bestellnummer, das Bestelldatum, das Lieferdatum, die Versandkosten usw.
  • Die Kundennummer, Kundenname, Kundenadresse usw.
  • Jedes Datum besteht aus mehreren Spalten: vollständiges Datum, Tag des Jahres, Monat, Jahr, Quartal, Quartal mit Jahr usw.
  • Jede Adresse besteht aus der vollständigen Adresse, der Stadt, dem Staat, dem Gebiet, der Ortsvorwahl usw.

Auf diese Weise ist das dynamische Reporting relativ einfach zu verwenden, da die Benutzer keine Tabellen beifügen müssen, sondern alle benötigten Daten haben.

    
Codo 28.12.2012 22:06
quelle
2

Ich würde Ihnen empfehlen, sich die fertigen Berichtskomponenten anzusehen. Zum Beispiel Microsoft Reporting Services , Telerik , DevExpress oder (ich sollte gestehen, unser Produkt) SharpShooter-Berichte

    
Mikhail Payson 29.12.2012 09:01
quelle
1

Schauen Sie sich um, welche Art von Reporting-Tools gibt es? Gibt es etwas da draußen, das sogar in die Nähe kommt, was sie erwarten? Die Tools in der Umgebung sind generisch und Ihr Fall ist möglicherweise eher spezifisch. Sie kennen bereits einen Teil der Antwort, nach der Ihre Nutzer suchen. Deine Lösung sollte ihnen auf diese Weise helfen.

Du hast das Wort "Magie" benutzt. Das sollte ein großes Warnzeichen sein. Als Entwickler machen wir nicht Magie , wir tun Logik . Wir können Illusionen schaffen, wir können nicht zaubern.

Ich würde in Sql Analysis Services und Excel eintauchen. Es gibt eine Präsentation hier . Diese Typen zaubern auch nicht, aber sie können viel tun.

    
Jacco 28.12.2012 22:20
quelle
0

Wir verwenden eine Kombination aus EasyQuery und FastReport.NET.

Mit EasyQuery können unsere Benutzer dynamische Abfragen erstellen und die für Report und FastReport erforderlichen Daten extrahieren - für die eigentliche Berichterstellung und den Export in Excel oder PDF.

    
DevGuy 30.04.2013 17:30
quelle