Crystal Report Неверный путь к файлу отчета - PullRequest
0 голосов
/ 21 октября 2018

Я звоню в Crystal Report из формы c #, как показано ниже, но я получаю сообщение об ошибке Invalid report file path в строке подключения

rep.DataSourceConnections[0].SetConnection(StrServer, StrDatabase, StrUserID, StrPwd);

строка пути отчета верна

string RepPath = Application.StartupPath + @"\" + vRepName;

потому что, когда я комментирую строку, которая выдает ошибку, она работает на моем компьютере разработчика, но когда я перемещаю приложение на клиентские ПК, так как строка соединения будет отличаться, я получу ошибку соединения с БД, такЯ читаю строку подключения из appsetting

if (vRepName == "REP0105.RPT")
{
    ReportDocument rep = new ReportDocument();

    ConnectionInfo info = new ConnectionInfo();
    ParameterFields paramFields = new ParameterFields();
    ParameterField paramField = new ParameterField();
    ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();

    paramField.Name = "P_WHERE";
    paramDiscreteValue.Value = vWHERE;
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);

    paramField = new ParameterField();
    paramField.Name = "P_ComparingFun";
    paramDiscreteValue = new ParameterDiscreteValue();
    paramDiscreteValue.Value = F0112.ComparingFun;
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);

    paramField = new ParameterField();
    paramField.Name = "P_TotalCount";
    paramDiscreteValue = new ParameterDiscreteValue();
    paramDiscreteValue.Value = F0112.TotalPatientCount;
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);

    paramField = new ParameterField();
    paramField.Name = "P_ResultCount";
    paramDiscreteValue = new ParameterDiscreteValue();
    paramDiscreteValue.Value = F0112.ResultPatientCount;
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);

    paramField = new ParameterField();
    paramField.Name = "P_Pct";
    paramDiscreteValue = new ParameterDiscreteValue();
    paramDiscreteValue.Value = F0112.PatientPct;
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);

    paramField = new ParameterField();
    paramField.Name = "P_TotalSessionCount";
    paramDiscreteValue = new ParameterDiscreteValue();
    paramDiscreteValue.Value = F0112.TotalSessionCount;
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);

    paramField = new ParameterField();
    paramField.Name = "P_ResultSessionCount";
    paramDiscreteValue = new ParameterDiscreteValue();
    paramDiscreteValue.Value = F0112.ResultSessionCount;
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);

    paramField = new ParameterField();
    paramField.Name = "P_SessionPct";
    paramDiscreteValue = new ParameterDiscreteValue();
    paramDiscreteValue.Value = F0112.SessionPct;
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);

    RepViewer.ParameterFieldInfo = paramFields;

    rep.DataSourceConnections[0].SetConnection(StrServer, StrDatabase, StrUserID, StrPwd);
    rep.Load(RepPath);

    RepViewer.ReportSource = rep;
    rep.Refresh();
}
...