SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Crystal Reports & SharePoint

Geprüfte Antwort Dieser Beitrag hat 23 Antworten

Ohne Rang
1714 Beiträge
C.Kaiser erstellt 4 Okt. 2010 13:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

ich beiße mir seit ein paar Tagen an folgedem Problem die Zähne aus:

Ich möchte in einem Crystal Report Daten aus SharePoint anzeigen. Die Daten will ich über das SP Objektmodell in ein DataSet ziehen und dieses an Crystal Reports übergeben.
Nun scheitert es aber schon an der Übergabe eines einfachen DataSets an den Report. Ich bekomme die ganze Zeit den Fehler "Unknown Database Connector Error - Error in file temp_lustigeGUID.rpt". Ich bin mir relativ sicher, dass es an der art und Weise liegt, wie ich im Report die Datenquelle definiere (ADO.NET Datenquelle -> VS DataSet).

Folgenden Code verwende ich derzeit:

//Der Report heißt CrystalReport1
CrystalReport1 report = new CrystalReport1();

//DataSet welches ich über "Neues Element" -> "DataSet" der VS-Solution hinzugefügt habe
MyDataSet nds = new MyDataSet();

//Füllen des Dataset, Daten werden auch korrekt eingetragen sagt der Debugger
...

//Hier crasht es mit o.g. Fehlermeldung
report.SetDataSource(nds);

Beispiel welches ich verwendet habe:
http://csharp.net-informations.com/crystal-reports/csharp-crystal-reports-without-database.htm

Hatte schonmal jemand dieses Problem oder einen Ansatz?
Danke!

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 4 Okt. 2010 14:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich hatte zum Glück schon lange nichts mehr mit CR zu tun, kann mich aber an ähnliche Probleme erinnern: wenn man per Code einen Report anzeigen lassen will, dann müssen immer alle irgendwo rumschwirrenden Verbindungen in der *.rpt neu gesetzt werden.

Irgendwo scheinen da im Dataset (und dem was der Designer da generiert hat) noch Datenbankverbindungen zu stecken. Kannst Du das prüfen? Oder es mit einem nicht per Designer erzeugten Dataset testen?

(Warum nimmst Du nicht eine vernünftige Reportengine?) SCNR

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 4 Okt. 2010 14:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi und schonmal danke für die Antwort.

Das ist jetzt wirklich nicht gut formatiert, aber anders bekomme ichs grad nicht rein.

Das steht im Schema des DataSets unter Connections:
<DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
        <Connections />
        <Tables />
        <Sources />
</DataSource>

Da steht, aus meiner Sicht, nichts verwerfliches drin.

Hier ist das Element Tag:
<xs:element name="MyDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="MyDataSet" msprop:Generator_DataSetName="MyDataSet" msprop:EnableTableAdapterManager="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="DataTable1" msprop:Generator_UserTableName="DataTable1" msprop:Generator_RowDeletedName="DataTable1RowDeleted"   msprop:Generator_RowChangedName="DataTable1RowChanged" msprop:Generator_RowClassName="DataTable1Row" msprop:Generator_RowChangingName="DataTable1RowChanging" msprop:Generator_RowEvArgName="DataTable1RowChangeEvent" msprop:Generator_RowEvHandlerName="DataTable1RowChangeEventHandler" msprop:Generator_TableClassName="DataTable1DataTable" msprop:Generator_TableVarName="tableDataTable1" msprop:Generator_RowDeletingName="DataTable1RowDeleting" msprop:Generator_TablePropName="DataTable1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Title" msprop:Generator_UserColumnName="Title" msprop:Generator_ColumnVarNameInTable="columnTitle" msprop:Generator_ColumnPropNameInRow="Title" msprop:Generator_ColumnPropNameInTable="TitleColumn" type="xs:string" minOccurs="0" />
              <xs:element name="Body" msprop:Generator_UserColumnName="Body" msprop:Generator_ColumnVarNameInTable="columnBody" msprop:nullValue="_throw" msprop:Generator_ColumnPropNameInRow="Body" msprop:Generator_ColumnPropNameInTable="BodyColumn" type="xs:string" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>

 Das Element-Tag sieht komisch aus, eventuell zuviel dran rumgespielt. jetzt spiele ich erstmal das neuste SP von CR auf und dann schaun mer mal was passiert.

Warum nutze ich nichts anderes..... hm leider nicht meine Entscheidung und ich würds auch jetzt schon nicht nochmal machen :-)

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 4 Okt. 2010 15:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hm, sieht auch m.M.n. gut aus. Ich fürchte, da kann ich Dir nicht wirklich helfen. Genau wegen solcher Deployment-Probleme weigere ich mich seit Jahren CR auch nur anzufassen. Das hat früher unter Visual Studio 6.0 (lang ist's her) schon nicht funktioniert und tut es offenbar heute immer noch nicht :-(

[quote user="C.Kaiser"]Das ist jetzt wirklich nicht gut formatiert[/quote]

Ist völlig in Ordnung. Da haben wir beide hier schon viel schlimmeres gesehen ;-)

[quote user="C.Kaiser"]Das Element-Tag sieht komisch aus[/quote]

Ich kann da nichts komisches entdecken.

[quote user="C.Kaiser"]Warum nutze ich nichts anderes..... hm leider nicht meine Entscheidung [/quote]

War mir fast klar und deshalb hatte ich auch ein SCNR dazugeschrieben...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 6 Okt. 2010 10:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Andi Fandrich"]War mir fast klar und deshalb hatte ich auch ein SCNR dazugeschrieben...[/quote]

War mir auch klar, ich hatte nur das Bedürfniss mich zu rechtfertigen :-)

Ich habdas Problem jetzt zumindest eingegrenzt, da der gleiche Code mit einer normalen Konsolenanwendung funktioniert, aber nicht innerhalb eines EventHandlers. Es muss also, so denke ich zumindest, irgendwo ein Problem mit SharePoint-Rechten o.ä. sein.

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 6 Okt. 2010 12:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Problem gefunden:
In der web.config  Full Trust eingestellt und dann gehts. Ist aber nicht schön und will ich auch nicht daher nun die Frage:

Wie bekomme ich es hin, dass der Code unter Full-Trust läuft (hab ich so noch nicht gemacht :-()?
Das hier: http://msdn.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute.aspx
und RunWithElevatedPrivileges funktioniert alleine nicht...

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Okt. 2010 13:03
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Schau mal hier:
http://www.sharepointdevwiki.com/display/public/Implementing+basic+code+access+security

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 6 Okt. 2010 13:59
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

hm ok an den CAS wollte ich mich versuchen vorbei zu mogeln :-P

Gibts eine Möglichkeit das mit dem wsp-Builder deploybar zu machen? Das hier beschreibt wie man es über die manifest.xml macht, die erstellt der Builder allerdings automatisch http://blogs.devhorizon.com/reza/?p=785

Manuelle Schritte auf dem Server würde ich ganz gerne umgehen.

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Okt. 2010 14:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Tut mir leid, das kann ich Dir nicht sagen. WspBuilder habe ich nie genutzt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 6 Okt. 2010 14:29
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke schonmal, dann werd ich weitersuchen und probieren.

Einen anderen Weg (ausser über die Manifest.xml) kennst du aber nicht?

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 6 Okt. 2010 15:05
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Was ich gerade mal nicht verstehe:
Meine dll liegt im GAC, dementsprechend müsste diese dll ja full-Trust besitzen oder nicht? Muss ich jetzt die Assemblys finden, welche Crystal offensichtlich zur Laufzeit aufruft und für diese eine CAS schreiben oder muss ich für meine dll eine CAS schreiben.

Bei dem Thema bin ich mal wieder vollkommen unbefleckt.

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Okt. 2010 15:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du kannst die Einträge entweder über das Solution-Manifest machen, oder natürlich manuell in der web.config. Den Nachteil davon kennst Du sicher ;-)

Ansonsten kann ich Dir natürlich nicht sagen, warum CR da Zicken macht. Ich würde aber sagen, daß Du die CAS für eine (oder mehrere) derer Assemblies machen mußt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 6 Okt. 2010 17:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Eine letze Frage ( so hoffe ich):

Gibts nen Tool was mir anzeigt welche Assemblys gerade aufgerufen werden? Ich habe eine Vermutung um welche Assembly es sich handelt, aber es kann ja durchaus sien, dass da noch mehr nachkommt.

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 7 Okt. 2010 15:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

So hab die dll jetzt erstmal im GAC "geparkt" und dann funktionierts auch. Werd mir aber noch eine CAS schreiben...

Andere Frage:
Kann ich den Report in einer SharePoint aspx-Seite anzeigen lassen? Derzeit mag das noch nicht so wie ich das will, d.h. der Report wird nicht angezeigt (er wird aber korrekt erstellt, zur Sicherheit lege ich diesen noch als PDF im System ab).

Folgendes verwende ich in einer DispForm.aspx (das "Report" wird noch angezeigt, aber der eigentliche Viewer nicht):
<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">
<table style="width:300px;margin-left:50px">
 <tr>
    <td>Report</td>            
    <td><CR:CrystalReportViewer ID="crystalReportViewer" runat="server" /></td>        
 </tr>
</table>
</asp:Content>

Und folgende Code-Behind:
protected CrystalDecisions.Web.CrystalReportViewer crystalReportViewer;

       protected override void OnPreRender(EventArgs e)
        {
            using (SPWeb site = SPContext.Current.Web)
            {
                SPItem item = SPContext.Current.Item;
                Steckbrief report = new Steckbrief();

                report.SetDataSource(reportSet(item));
                crystalReportViewer.Visible = true;
                crystalReportViewer.ReportSource = report;

            }
     }

Die Frage ist jetzt ob es überhaupt möglich ist den Report direkt einzubinden oder muss ich noch was auf dem Server aktivieren? Auf den Seiten die ich zu dem Thema gefunden habe wird davon gesprochen, dass man das Ganze in einen Form-Tag einbinden soll - das funktioniert ja aber unter der SharePoint aspx-Seite nicht.

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Okt. 2010 16:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Vielleicht braucht es einen SafeControl-Eintrag für den Viewer?

Sonst kann ich dazu gar nichts sagen, weil ich CR immer nur in Windows Forms verwendet habe.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 7 Okt. 2010 16:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hm ist eigentlich ein normales WebControl welches man ähnlich wie Panels verwenden kann, habe aber mal in der web.config sämtliche Einträge vorgenommen, hat sich aber trotzdem nicht geändert.

Ich glaub ich geh dann nochmal BusinessObjects nerven. :-)

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Okt. 2010 16:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="C.Kaiser"]Ich glaub ich geh dann nochmal BusinessObjects nerven[/quote]

Ach, CR gehört immer noch denen? Hat doch früher alle paar Monate den Besitzer gewechselt...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 7 Okt. 2010 16:45
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hier nochmal ein msdn Artikel dazu... eigentlich ganz einfach - nur für Christian nicht.
http://msdn.microsoft.com/en-us/magazine/cc301570.aspx

 

 

Ich glaub das ist wieder so ein Ding wie mit dem SPGridView...

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 8 Okt. 2010 14:35
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mittlerweile wirds schon ein wenig frustrierend... das habe ich gerade in den IIS-Logs gefunden. Kann das jemand interpretieren?

2010-10-08 12:11:17 W3SVC1501374153 192.168.0.150 GET /aspnet_client/system_web/2_0_50727/crystalreportviewers12/js/crviewer/crv.js - 80 - 192.168.0.150 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.2;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729;+InfoPath.2) 401 (//Anmerkung von mir: Unauthorized???) 2 2148074254

2010-10-08 12:11:17 W3SVC1501374153 192.168.0.150 GET /aspnet_client/system_web/2_0_50727/crystalreportviewers12/js/crviewer/crv.js - 80 - 192.168.0.150 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.2;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729;+InfoPath.2) 401 1 0

2010-10-08 12:11:17 W3SVC1501374153 192.168.0.150 GET /aspnet_client/system_web/2_0_50727/crystalreportviewers12/js/crviewer/crv.js - 80 192.168.0.150 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.2;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729;+InfoPath.2) 404 (//Anmerkung von mir: Not found???) 0 0

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 8 Okt. 2010 19:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Problem gelöst...

Crystal legt ein neues virtuelles Verzechnis in der Default Web Application an. Diese wird aber von SharePoint gestoppt, dementsprechend ist das virtuelle Verzeichnis nicht  erreichbar.

Kurzfassung
-> virtuelles Verzeichnis in SharePoint Web Anwendung neu anlegen,
-> erforderliche Dateien kopieren
-> Mapping des virtuellen Verzeichnisses ändern
-> untergeordnete web.config ändern
-> IIS neustarten...

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 14 Okt. 2010 09:30
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zsuammen, (hallo Andi :-) ),

[quote user="Andi Fandrich"]

(Warum nimmst Du nicht eine vernünftige Reportengine?) SCNR

[/quote]

Da wir festgestellt haben, das Crystal in der derzeit aktuellsten Version keine 64-Bit Laufzeitumgebung anbietet, der Kunde aber, so wie es sein sollte, komplett 64-Bit spricht, erledigt sich gerade Crystal Report sund die Arbeit der letzten 15 Tage... Lustigerweise bietet Crystal in älteren Versionen eine 64-Bit Laufzeitumgebung an - verstehe das mal wer will (ich würde jetzt lachen, wenn ichs nicht ausbaden müsste :-) ).

Frage, mit welchen Reporting-Tools habt ihr ordentliche Erfahrungen gemacht, vor allem in bezug auf:
- einigermaßen einfache Handhabung & Einarbeitung
- Fokus liegt derzeit auf Textdarstellung & kaum bis wenige Grafiken / Diagramme
- der Report muss sowohl im Web, als auch als PDF exportiert und gedruckt werden können (ich möchte keine zwei Tools oder Elemente für einen Report bearbeiten müssen)

Einfallen würde mir natürlich die Microsoft Reporting Services, nur da müssen meines Wissens nach auf dem SQL Server die Reporting Services aktiviert werden. Das ist dann schon wieder schwierig. Gibt es anderen Tools mit denen man es realisieren kann, ohne die Reporting Service zu installieren (Crystal war da schon komfortabel...)

Danke!

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Okt. 2010 18:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="C.Kaiser"]Microsoft Reporting Services[/quote]

Mir fallen da hauptsächlich die ein, allerdings mit den von Dir erwähnten Einschränkungen

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 14 Okt. 2010 19:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Habe heute rausgefunden das man auch lokale Reports erzeugen und auch im SharePoint anzeigen kann. Geht sehr schnell, aber sind kaum zu gebrauchen wenn man nur Text anzeigt - vor allem dann wenn es sich um RichText handelt.

Vorteile:
- kein Report Server benötigt
- schnelle Implementierung

Nachteile
- enorme Funktionseinschränkungen
- "embedded" Reports nicht möglich, die Reports müssen irgendwo auf dem Server im Filesystem abgelegt werden - blödes Deployment

Außerdem habe ich heute noch rausgefunden, warum es nicht mit den Crystal Reports funktioniert hat, die mit Visual Studio mitgeliefert werden. Es gibt die ominöse Datei crdb_adoplus.dll, die für die ADO-Datenquellen zuständig ist (DataSets usw.). Bei Crystal 2008 konnte man die Datei in den GAC legen damit sie Full Trust erhält. Bei den Visual Studio Crystal Reports führt das zu einem Fehler (selbst bei Konsolenanwendungen), da muss dann eine CAS her.

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 4 Okt. 2010 16:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Installiert man das SP3 für CR beendet sich VS beim debuggen (stürzt komplett ab) und im EventLog bekommt man vielleicht nich diese Fehlermeldung

Message: Could not load file or assembly 'crdb_adoplus, Version=12.0.1100.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418)

wird aber auch nur wenn man Glück hat geloggt - VS stürzt immer ab. Diese Software ist mal....

 

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de