0

Ich verwende VS2008, schreibe eine C# .NET-App. Ich habe einen SQL Server 2005-Datenbankserver mit einer Datenbank, die mehrere gespeicherte Prozeduren enthält. Ich möchte die gespeicherten Prozedurdaten in einem Bericht anzeigen.Leerer Bericht bei Verwendung des VS2008-Berichtsassistenten und der gespeicherten Prozedur

Also habe ich als Test ein brandneues VS2008 C# -Projekt basierend auf dem Projekttyp "Reporting -> Reports Application" erstellt.

Ich ging durch den Assistenten, Herstellen einer Verbindung mit der Datenbank und Erstellen des Datasets aus der gespeicherten Prozedur, die ich verwenden wollte. Ich habe den Berichtsassistenten angewiesen, einen tabellarischen Bericht zu erstellen, und ich habe mich nicht darum gekümmert, die Spalten zu gruppieren.

Beim Ausführen der Anwendung erschien die Berichtsanzeige mit "Bericht 1" oben, aber sonst nichts. Es gab nur eine Seite.

Wenn ich eine ganz neue Anwendung nach genau der gleichen Methode erstellen, aber dieses Mal entweder eine Ansicht oder eine Tabelle aus meiner Datenbank auswähle, erhalte ich wie erwartet einen mehrseitigen Bericht mit Daten.

Warum funktioniert das Berichtssystem nicht mit gespeicherten Prozeduren, funktioniert aber gut mit Tabellen oder Sichten? Die gespeicherte Prozedur funktioniert, wenn ich sie in SQL Management Studio ausführe und keine Parameter benötigt.

Antwort

2

Ich habe das behoben, indem ich den Assistenten nicht benutzte.

  1. Erstellen Sie eine neue WinForms App
  2. manuell Datensatz hinzufügen, indem
  3. manuell hinzufügen ein Tableadapter mit einem Doppelklick auf das DataSet XSD-Datei im Solution Explorer die Lösung im Solution Explorer mit der rechten Maustaste, dann Klicken Sie mit der rechten Maustaste auf den leeren Bereich und wählen Sie "Add-Table Adapter ..."."
  4. Verbindung mit dem DB
  5. Wählen Sie‚Bestehende Stored Procedures‘
  6. die erforderliche gespeicherte Prozedur zuweisen und den Assistenten
  7. Fügen Sie manuell einen Bericht an die Lösung
  8. Doppelklicken Sie abgeschlossen haben, dann gehen zu „Data-> Datenquellen anzeigen“
  9. Ziehen Sie die gewünschten Felder auf den Bericht
  10. eine Microsoft.Reporting.WinForms.ReportViewer auf das Hauptformular Put
  11. Verwenden Sie die pop-out intelligente Aufgaben Dreieck den gewünschten Bericht

Sie können den Report-Assistenten unter der intelligente Aufgaben, was auf der Reportviewer-Steuerelement anstelle der Schritte 8 & 9 zuzuordnen, wenn Sie tabellarische Berichte erstellen möchten, usw.

0

Ich erinnere mich an ein Problem mit VS 2003 (Crystal Reports) und SQL Server 2000, wo der Berichts-Designer die von der gespeicherten Prozedur zurückgegebenen Felder nicht ermitteln konnte und als Ergebnis einen leeren Bericht generiert. In diesem Fall lag der Grund darin, dass die gespeicherte Prozedur ihre Ergebnisse aus einer im SP definierten Tabellenvariablen auswählte.

Haben Sie überprüft, ob dies der Fall ist?

Ich könnte die Dinge schon zu kompliziert machen, vielleicht ist der Grund viel einfacher, aber das war das Szenario, das mir sofort in den Sinn kam, als ich Ihren Beitrag sah.

Die Lösung für mein Problem damals war, eine Art Wrapper-SP stattdessen zu erstellen und alle Berechnungen in einer Tabellenwertfunktion auszuführen. Der SP wählte dann Daten aus dieser Funktion aus (SELECT a, b, c VON dbo.MyFunc (@param)), wodurch der Berichtsentwickler die Liste der Felder abrufen konnte. Ich brauchte den SP, da der Designer keine parametrisierten SELECT-Abfragen unterstützt. Diese Problemumgehung wurde jedoch in einer kleinen Anwendung implementiert, und ich bin mir nicht sicher, wie oder ob dieser Ansatz die Leistung in einem größeren Maßstab beeinflusst.

+0

Der Assistent weiß, welche Felder in der gespeicherten Prozedur enthalten sein sollten, da er sie in die Berichtsvorlage für mich einfügt. Auch wenn ich das Dataset im Seitenbereich von VS2008 erweitern, kann ich die Live-Daten darin sehen. – Piku

Verwandte Themen