Print -
Dynamic Crystal Reports from C# Application
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
{
CrystalReport1 objRpt = new CrystalReport1();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection cnn ;
string connectionString = null;
string sql = null;
connectionString = "data source=SERVER NAME;initial catalog=crystaldb;user id=USER NAME;password=PASSWORD;";
cnn = new SqlConnection(connectionString);
cnn.Open();
sql = procesSQL();
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
DataSet1 ds = new DataSet1();
dscmd.Fill(ds, "Product");
objRpt.SetDataSource(ds.Tables[1]);
crystalReportViewer1.ReportSource = objRpt;
crystalReportViewer1.Refresh();
}
public string procesSQL()
{
string sql = null;
string inSql = null;
string firstPart = null;
string lastPart = null;
int selectStart = 0;
int fromStart = 0;
string[] fields = null;
string[] sep = { "," };
int i = 0;
TextObject MyText ;
inSql = textBox1.Text;
inSql = inSql.ToUpper();
selectStart = inSql.IndexOf("SELECT");
fromStart = inSql.IndexOf("FROM");
selectStart = selectStart + 6;
firstPart = inSql.Substring(selectStart, (fromStart - selectStart));
lastPart = inSql.Substring(fromStart, inSql.Length - fromStart);
fields = firstPart.Split(',');
firstPart = "";
for (i = 0; i <= fields.Length - 1; i++)
{
if (i > 0)
{
firstPart = firstPart + ", " + fields[i].ToString() + " AS COLUMN" + (i + 1);
firstPart.Trim();
MyText = (TextObject) objRpt.ReportDefinition.ReportObjects[i+1];
MyText.Text = fields[i].ToString();
}
else
{
firstPart = firstPart + fields[i].ToString() + " AS COLUMN" + (i + 1);
firstPart.Trim();
MyText = (TextObject)objRpt.ReportDefinition.ReportObjects[i+1];
MyText.Text = fields[i].ToString();
}
}
sql = "SELECT " + firstPart + " " + lastPart;
return sql;
}
}
}