Crystal Report in C#


JK_net

Erfahrenes Mitglied
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
 

Maxii

Mitglied
Ich habe vor einem Jahr an meiner Diplomarbeit geschrieben, zusammen mit 2 Personen. Es war ebenso gefordert, die Ausgabe mit Crystal Reports durchzufürhren. Die anderen haben es irgendwie hingebogen, war nicht mein Aufgabengebiet, damit wir das Pflichtenheft erfüllen. Es war eine Partnerfirma an dem Projekt beteiligt, wir hatten uns mit ihnen geeinigt, dass wir eine andere Lösung bieten. Dies haben wir dann unserem Professor vorgetragen und haben das ganze nett mit Postscript dann gelöst.
 
S

Stephan3030

Hallo zusammen,

ich bin ebenso auf dieses Problem gestoßen, dass ja vermutlich immer wieder hochkommt. Deshalb werde ich keinen neuen Thread eröffnen, sondern in diesen hier posten.

Und mal ganz ehrlich, die Antwort über mir ist schlicht unbrauchbar. Hier wird schlicht erfragt, wie ich anhand von CSharp einen Parameter an einen Crystal Reports-Bericht übergeben kann.

Wenn ich immer so auf Fragen antworten würde:
Ich hatte mal einen Kollegen, der das Problem gelöst hat. Ich habs nicht gelöst. Machs doch anders...

Als Tipp:
Das hat mir weitergeholfen: http://csharp.net-informations.com/crystal-reports/csharp-crystal-reports-sql-query.htm
-----------------------------------------------------------------

using System;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.Data;
using System.Data.SqlClient ;

namespace WindowsApplication1
{
public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
SqlConnection cnn ;
string connectionString = null;
string sql = null;

connectionString = "data source=SERVERNAME;initial catalog=DATABASENAME;user id=USERNAME;password=PASSWORD;";
cnn = new SqlConnection(connectionString);
cnn.Open();
sql = "SELECT Product_id,Product_name,Product_price FROM Product";
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
DataSet1 ds = new DataSet1();
dscmd.Fill(ds, "Product");
MessageBox.Show (ds.Tables[1].Rows.Count.ToString());
cnn.Close();

CrystalReport1 objRpt = new CrystalReport1();
objRpt.SetDataSource(ds.Tables[1]);
crystalReportViewer1.ReportSource = objRpt;
crystalReportViewer1.Refresh();
}
}
}
 
S

Stephan3030

Sorry, der Code oben ist Quatsch, der hier wäre richtig:

using System;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
ReportDocument cryRpt = new ReportDocument();
cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt");

ParameterFieldDefinitions crParameterFieldDefinitions ;
ParameterFieldDefinition crParameterFieldDefinition ;
ParameterValues crParameterValues = new ParameterValues();
ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();

crParameterDiscreteValue.Value = textBox1.Text;
crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["Customername"];
crParameterValues = crParameterFieldDefinition.CurrentValues;

crParameterValues.Clear();
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);

crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();

}
}
}