Announcement

Collapse
No announcement yet.

Gepeicherte Prozedur/Crystal/.Net

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

  • Gepeicherte Prozedur/Crystal/.Net

    Hallo,

    Ich habe einen Bericht unter Crystal Reports (CR) generiert. Die Datenquelle dieses Bericht basiert auf einer Abfrage, welche ich mit dem Datasetdesigner in das Projekt integriert habe. Nun würde ich gern bei Ausführung des Berichtes eine gespeicherte Prozedur ausführen. Diese soll jeweils nach einem Seitenwechsel einen Eintrag in eine Tabelle (Inhaltsangabe,Seitennummer) machen. Anschließend soll dann eine zweiter Bericht auf dieser Basis ein Inhaltsverzeichnis erstellen.
    Code:
    Create PROCEDURE dbo.create_content (@page_number int,@content_pg varchar(50))
    AS
    BEGIN
       insert into dbo.tblInhalt_test (id_inhalt,page_no) values (@content_pg ,@page_number )
    END
    Soweit die Idee.
    Nun habe ich aber das Problem die gewünschte Prozedur in Crystal Reports parallel zu meiner Abfrage einzubinden. Bei der direkten Einbindung der Prozedur über die Datenbank (OLE-Anbindung) erhalte ich in CR die Parameter der Prozedur, habe aber das Problem von 2 Datenquellen im Bericht. Alternativ wäre natürlich auch die Einbindung meiner Abfrage direkt (ohne Datasetdesigner) möglich. Da ich aber im Projekt zentral die connectionstrings aufbaue und alle Daten darüber selektiere/bearbeite ist das aus meiner Sicht nicht die schicke Lösung. Kann ich die Prozedur auch über den Datasetdesigner einbinden und dann in CR nutzen?

    Ich hoffe auf Unterstützung..

  • #2
    Nun, da Ihr offensichtlich auch keine bessere Idee habt, habe ich meine Datenquelle auf eine direkte Verbindung zur DB umgestellt. Die Verbindungsinformationen stelle ich beim Aufruf des Berichtes in .NET bereit.

    Allerdings habe ich nun ein Problem, was ich vorher unterschätzt bzw. nicht erkannt habe. In den einschlägigen Dokumentationen zu Crystal Reports habe ich die Anwendung von Prozeduren nur als Bereitstellung einer Datenquelle gefunden. Mein Ansinnen ist aber, bei jedem Seitenwechsel die Prozedur aufzurufen und aktuelle Parameter (Inhalt/Seite) zu übergeben. Irgendwie kann ich dazu aber nichts finden. Geht das nicht?? Hat jemand eine Idee?
    Bitte lasst mich nicht hängen..

    Comment


    • #3
      Ich wäre immernoch an Antworten interessiert. Leider hat sich mein Problem noch nicht einer Lösung ergeben.

      Kann ich gespeicherte Prozeduren aus CR zur Datenmodifikation in der Datenbank aufrufen oder nicht. Wenn Ja- wie?

      Comment


      • #4
        Hallo,

        ich komme leider nicht wirklich weiter. Nach intensiven Studium müsste es möglich sein, über die Klasse ReportDocument auf z.B. das Page_Load-Ereignis zuzugreifen. Zur Zeit habe ich in eine WinForms einen CrystalReportviewer eingebunden. Anschließend habe ich den Bericht der Reportsource zugewiesen.

        Code:
        Imports CrystalDecisions.CrystalReports.Engine
        Public Class prnPruefberichte
        ..
        Private Sub prnPruefberichte_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ...
        sqlstr=...
        da = New SqlDataAdapter(sqlstr, con)
        da.Fill(ds, "Erg_Select")
        Dim dt As DataTable = ds.Tables("Erg_Select")
        Dim report As New Pruefbericht
        Dim report As New Pruefbericht
        Me.CR_Pruefberichte.ReportSource = Report
        Me.CR_Pruefberichte.ReportSource.SetDataSource(dt)
        
        end sub
        
        End Class
        Bericht wird auch fein angezeigt.
        Wie komme ich nun aber an das Page_Load - Ereignis? Laut Literatur müsste ich über die VS.Net-Intellisense-Technologie die Ereignisse sehen. Geht aber nicht.

        Comment


        • #5
          Und deine Literatur bezieht sich auf Winforms? Page_Load hört sich ehernach ASP.Net an.

          Comment


          • #6
            Hallo Ralf,
            tja, soweit bin ich nun auch. Das Werk ist von G. Peck . CrystalReports 2008. Dort ist leider der Sprung zu ASP.Net textuell untergegangen.
            In diesem Sinne hilft das Ereignis Load Page nicht. Ich orgele hier wirklich hilflos rum, um zu einem Inhaltsverzeichnis für variable zusammengesetzte Bericht zu kommen. Hast Du vielleicht eine Idee, ob man Parameter aus CR wieder auslesen kann? Vielleicht könnte ich dann mit Me.CR_Pruefbericht.ShowNextPage() den Bericht durchlaufen. Bei jedem Seitenkopf müsste ich dann den Parameter(Mein Content) setzen. Dann hätte ich ggf. über Me.CR_Pruefbericht.GetCurrentPageNumber() und "Me.CR_Pruefbericht.ReportSource.parameterfields(p arameter).currentvalues" die Seitenzahl und den Content und könnte mein Insert aus VB organisieren. Wobei die kursive Funktion nicht funktioniert.

            Oder kann ich irgendwie anders über SDK in das Reportereignis-Seitenwechsel eingreifen?

            Comment


            • #7
              Sorry, ich habe keine wirkliche Ahnung von Crystal(Probiert, für Mist befunden, entsorgt).
              Da es so aussieht als finde sich hier auch niemand der echte Erfahrung damit hat würde ich dir das entsprechende Msdn Forum empfehlen.

              Comment


              • #8
                Na erstmal Dank..

                Comment


                • #9
                  Hallo Ralf,

                  eine Frage noch - was ist für Dich die Alternative? Wie realisierst Du das Reporting?

                  Comment


                  • #10
                    DevExpress XtraReports

                    Aber eher weil ich sonst auch meist alles aus dem Devexpress Lager benutzte und die XtraReports mehr als ausreichend sind und nicht weil ich alle möglichen Reporter verglichen habe und der gewonnen hat. In Aktion siehst du die am ehesten in den Trainingvideos

                    Comment


                    • #11
                      Hallo ralf,

                      vielen Dank. Das schau ich mir mal in Ruhe an. Für mein Problem habe ich erstmal eine Lösung. Ich habe mein Inhaltsverzeichnis selbst ausgerechnet. Nicht schick, funktioniert aber erstmal und der Kunde ist glücklich..

                      Comment

                      Working...
                      X