Symptom
sql CR Crystal Reports dot
Resolution
- The bellow code will convert one table to a command object
- The code can be extended to tow tables
- Note that two tables is the limit
private void TableToCommand_Click(object sender, EventArgs e)
{
CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
ISCDReportClientDocument rcd;
rcd = rptClientDoc;
rptClientDoc.DatabaseController.LogonEx("ServerName", "xtreme", "sa", "pw");
CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo oldConninfo;
CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo newConnInfo = new CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo();
CrystalDecisions.ReportAppServer.DataDefModel.Table oldTbl;
CrystalDecisions.ReportAppServer.DataDefModel.CommandTable newTbl = new CommandTable();
oldTbl = (CrystalDecisions.ReportAppServer.DataDefModel.Table)rcd.Database.Tables[0];
oldConninfo = oldTbl.ConnectionInfo.Clone(true);
GroupPath gp = new GroupPath();
gp.FromString("");
string sql = String.Empty;
rptClientDoc.RowsetController.GetSQLStatement(gp, out sql);
PropertyBag QEProps = new PropertyBag();
PropertyBag logonProps = new PropertyBag();
//Set the attributes for the logonPropsBag
logonProps.Add("Database", "xtreme");
logonProps.Add("DSN", "ServerName");
logonProps.Add("UseDSNProperties", "False");
//Set the attributes
QEProps.Add("Database DLL", "crdb_odbc.dll");
QEProps.Add("QE_DatabaseName", "xtreme");
QEProps.Add("QE_DatabaseType", "ODBC (RDO)");
//Add the QE_LogonProperties we set in the logonProps Object
QEProps.Add("QE_LogonProperties", logonProps);
QEProps.Add("QE_ServerDescription", "ServerName");
QEProps.Add("QE_SQLDB", "True");
QEProps.Add("SSO Enabled", "False");
newConnInfo.Attributes = QEProps;
newConnInfo.UserName = "sa";
newConnInfo.Password = "pw";
newConnInfo.Kind = CrConnectionInfoKindEnum.crConnectionInfoKindCRQE;
newTbl.ConnectionInfo = newConnInfo;
newTbl.CommandText = sql;
newTbl.Name = "Command";
// foreach(CrystalDecisions.ReportAppServer.DataDefModel.Table tbl in rcd.Database.Tables)
{
rcd.DatabaseController.SetTableLocationEx(oldTbl,newTbl);
oldTbl =(CrystalDecisions.ReportAppServer.DataDefModel.Table) rcd.Database.Tables[0].Clone(true);
rcd.DatabaseController.SetTableLocationEx(oldTbl, newTbl);
}
// save the report to a new folder
}
Keywords
KBA , BI-DEV-NET-SDK , .NET SDK / COM SDK , How To
Product
Crystal Reports 2008 V1 ; SAP Crystal Reports XI R2 ; SAP Crystal Reports, developer version for Microsoft Visual Studio