[英]What is difference between Connectionstring and Connectioninfo in C# and crystal reports
[英]C# Crystal Reports ConnectionInfo and Parameters
我有一個ac#應用程序,它將某些參數傳遞給Crystal報表,然后加載報表。 這一切都按預期工作,但我現在要求應用程序針對除本地數據庫之外的其他數據庫運行。
我已添加報告的連接信息,但在加載報告時,它現在提示輸入報告參數。 如果我對本地數據庫運行相同的代碼(帶有連接信息),它運行正確(沒有參數提示。這是我的代碼:
public frmReport(ReportDocument cryRpt, DateTime dFromDate, DateTime dToDate,
Int32 iEmployeeId, Int32 iRetentionDays,
Boolean bExTax, Boolean bShowDefinitions, DBase _oDbase, Log _oLog)
{
InitializeComponent();
_oDBase = _oDbase;
iEmployeeIdReport = iEmployeeId;
TableLogOnInfos crtablelogoninfos = new TableLogOnInfos();
TableLogOnInfo crtablelogoninfo = new TableLogOnInfo();
ConnectionInfo crConnectionInfo = new ConnectionInfo();
Tables CrTables;
string sWowPath = Wow6432Path();
crConnectionInfo.ServerName = Registry.LocalMachine.OpenSubKey(@"Software" + sWowPath + "\\ShortCuts\\Database\\ShortcutsPOS").GetValue("Server").ToString(); ;
crConnectionInfo.DatabaseName = Registry.LocalMachine.OpenSubKey(@"Software" + sWowPath + "\\ShortCuts\\Database\\ShortcutsPOS").GetValue("Database").ToString(); ;
crConnectionInfo.UserID = Properties.Settings.Default.Username.ToString();
crConnectionInfo.Password = Properties.Settings.Default.Password.ToString();
CrTables = cryRpt.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
crtablelogoninfo = CrTable.LogOnInfo;
crtablelogoninfo.ConnectionInfo = crConnectionInfo;
CrTable.ApplyLogOnInfo(crtablelogoninfo);
}
ParameterFields myParams = new ParameterFields();
ParameterField paramFieldFrom = new ParameterField();
ParameterField paramFieldTo = new ParameterField();
ParameterField paramFieldEmployeeId = new ParameterField();
ParameterField paramFieldRetentionDays = new ParameterField();
ParameterField paramFieldExTax = new ParameterField();
ParameterField paramFieldShowDefinitions = new ParameterField();
ParameterDiscreteValue paramDiscreteValueFrom = new ParameterDiscreteValue();
ParameterDiscreteValue paramDiscreteValueTo = new ParameterDiscreteValue();
ParameterDiscreteValue paramDiscreteEmployeeId = new ParameterDiscreteValue();
ParameterDiscreteValue paramDiscreteValueRetentionDays = new ParameterDiscreteValue();
ParameterDiscreteValue paramDiscreteValueEmployeeLevelList = new ParameterDiscreteValue();
ParameterDiscreteValue paramDiscreteValueExTax = new ParameterDiscreteValue();
ParameterDiscreteValue paramDiscreteValueShowDefinitions = new ParameterDiscreteValue();
paramFieldFrom.Name = "FromDate";
paramFieldTo.Name = "ToDate";
paramFieldEmployeeId.Name = "EmployeeId";
paramFieldRetentionDays.Name = "RetentionDays";
paramFieldExTax.Name = "ExTax";
paramFieldShowDefinitions.Name = "ShowDefinitions";
paramDiscreteValueFrom.Value = dFromDate;
paramDiscreteValueTo.Value = dToDate;
paramDiscreteEmployeeId.Value = iEmployeeId;
paramDiscreteValueRetentionDays.Value = iRetentionDays;
paramDiscreteValueExTax.Value = bExTax;
paramDiscreteValueShowDefinitions.Value = bShowDefinitions;
paramFieldFrom.CurrentValues.Add(paramDiscreteValueFrom);
paramFieldTo.CurrentValues.Add(paramDiscreteValueTo);
paramFieldEmployeeId.CurrentValues.Add(paramDiscreteEmployeeId);
paramFieldRetentionDays.CurrentValues.Add(paramDiscreteValueRetentionDays);
paramFieldExTax.CurrentValues.Add(paramDiscreteValueExTax);
paramFieldShowDefinitions.CurrentValues.Add(paramDiscreteValueShowDefinitions);
myParams.Add(paramFieldFrom);
myParams.Add(paramFieldTo);
myParams.Add(paramFieldEmployeeId);
myParams.Add(paramFieldRetentionDays);
myParams.Add(paramFieldExTax);
myParams.Add(paramFieldShowDefinitions);
cryViewer.ParameterFieldInfo = myParams;
cryViewer.Refresh();
cryViewer.ReportSource = cryRpt;
}
我將添加報表位置從另一個表單傳遞給此方法,然后在返回時運行.Show()。
編輯:好的只是運行了一些測試,如果我的連接是machinename \\ dbinstance它也不起作用,但它適用於(本地)\\ instancename。 報告文件中的命令對象具有(本地)\\ instancename的連接集,這是問題嗎?
在這種情況下,我的子報告有它自己的命令對象,這就是問題所在。 我已經更改了報告,因此子報告不再存在(非常基本,並不需要分開)並且問題已經停止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.