Laden...

Crystal Report in C#

Erstellt von JK_net vor 19 Jahren Letzter Beitrag vor 17 Jahren 4.119 Views
J
JK_net Themenstarter:in
187 Beiträge seit 2005
vor 19 Jahren
Crystal Report in C#

Hallo!

Ich habe in Crytal einen Report erstellt, diesen möchte ich jetzt in meiner C#-Anwendung aufrufen. Soweit kein Problem. Allerdings hat dieser Report einen Parameter, den ich füllen muss.
Kann mir jemand sagen, wie ich das in C# machen kann?

MfG
Jens

381 Beiträge seit 2004
vor 19 Jahren

Hast du das DataSet im Report definiert oder übergibst du es aus deiner Anwendung? Und was genau macht der Parameter?

Mit freundlichen Grüßen

René Paschold
.NET Developer / Trainer / Speaker / Author /
Projectleader / Software-Architect


.blog http://www.rene-paschold.de/
.business http://www.smarthouse.de/

J
JK_net Themenstarter:in
187 Beiträge seit 2005
vor 19 Jahren

Hallo!

Ich habe einen Report erstellt, indem ich direkt den Zugriff auf eine DB habe.
Der Command ist eine relative einfache SELECT-Abfrage. Der Parameter ist in der WHERE-Bedingung verankert (z.B. WHERE id = 1). Diesen Parameter, in diesem Fall die 1, möchte ich gerne aus meiner Anwendung übergeben.
Andererseits könnte ich auch die Datenbindung an den Report aus C# heraus machen, nur leider habe ich da keinen Ansatzpunkt, wie das funktioniert.

381 Beiträge seit 2004
vor 19 Jahren

Das ReportDocument müsste doch eine Parameter Collection haben. Ich bin im moment leider nicht vor meinem "richtigen" Arbeitsplatz und kann es deshalb nicht testen.

Ich versuche es mal aus dem Kopf:


CrystalDecisions.Shared.ParameterValues pCol =
  new CrystalDecisions.Shared.ParameterValues();
CrystalDecisions.Shared.ParameterDiscreteValue pWert =
  new CrystalDecisions.Shared.ParameterDiscreteValue();

pWert.Value = "Hier steht dein Wert!";
pCol.Add( pWert );

//Hier der Parametername aus deiner Abfrage
ReportDocument1.DataDefinition.ParameterFields["@wert"].
  ApplyCurrentValues( pCol );

Must mal versuchen ob das so geht. Hab schon eine Weile nichtsmehr mit CR gemacht.

Mit freundlichen Grüßen

René Paschold
.NET Developer / Trainer / Speaker / Author /
Projectleader / Software-Architect


.blog http://www.rene-paschold.de/
.business http://www.smarthouse.de/

J
JK_net Themenstarter:in
187 Beiträge seit 2005
vor 19 Jahren

Hallo!

Sorry, aber irgendwie komme ich da noch nicht so ganz mit zurecht.

An unhandled exception of type 'CrystalDecisions.CrystalReports.Engine.LoadSaveReportException' occurred in crystaldecisions.crystalreports.engine.dll

Additional information: Invalid report file path.

Ich bekomme beim Starten folgende Fehlermeldung.

Ich muss dazu sagen, ich vorher nur einen ReportViewer auf der Form platziert, und anschließend bei "ReportSource" meinen Report ausgewählt.

Habe eben noch ein reportDocument hinzugfügt, muss die beiden Controls denn noch irgendwie miteinander "verknüpfen?"

381 Beiträge seit 2004
vor 19 Jahren

Schau mal ob der Pfad zum Report nicht irgendwo hard drin steht ...

Mit freundlichen Grüßen

René Paschold
.NET Developer / Trainer / Speaker / Author /
Projectleader / Software-Architect


.blog http://www.rene-paschold.de/
.business http://www.smarthouse.de/

M
81 Beiträge seit 2006
vor 18 Jahren

Hatte auch das Problem mit Parameter an Crystal Reports übergeben und dabei diesen Thread gefunden. Mit der obigen Lösung hab ichs nicht hingekriegt, dafür viel einfacher:

report.SetParameterValue("{?myParam}", "myValue") 

Nur falls sich wieder mal jemand hierher verirren sollte...

Gruss
Mischa

V
842 Beiträge seit 2003
vor 18 Jahren

Statt "{?myParam}" kann man auch den "leserlichen" Namen verwenden. So habe ich in nem Report z.B. {?von_datum} und in der leserlicheren Form "von datum". Außerdem ist die Angabe des Parameters case-insensitiv.

D
18 Beiträge seit 2005
vor 17 Jahren

möchte noch hinzufügen:

die Anweisung

report.SetParameterValue("{?myParam}", "myValue");

muss nach der Anweisung kommen

report.SetDataSource(ds);

sonst eine Exception zur Laufzeit, wegen fehlenden Parameter