VB6 в C# преобразование. Crystal Reports - ParameterFields
У меня есть следующий код в vb6, и я не могу понять, как преобразовать его в C# (Visual Studio 2010) для жизни меня.
VB6 -
crtPanelStudyAuditTrail.ParameterFields(0) = "GA_PANEL;" & Trim(txtPanelStudy) & ";True"
crtPanelStudyAuditTrail.ParameterFields(1) = "GA_PANEL_LEG;" & Trim(txtPanelLeg) & ";True"
Попытка преобразования C#
crtrptPanelStudyAuditTrail.DataDefinition.ParameterFields["GA_PANEL"].PromptText = "GA_PANEL;" + txtPanelStudy.ToString().Trim() + ";True";
crtrptPanelStudyAuditTrail.DataDefinition.ParameterFields["GA_PANEL_LEG"].PromptText = "GA_PANEL_LEG;" + txtPanelLeg.ToString().Trim() + ";True";
Каждый раз, когда он печатается, я получаю "ошибку пропущенного значения параметра"
Часть печати верна, потому что у меня есть другой код, где я конвертирую поля формул, и те печатаются нормально.
Любые предложения о том, как я могу преобразовать строки параметра поля??
2 ответа
В настоящее время вы не устанавливаете значение параметра, вы устанавливаете текст подсказки. Есть несколько способов установить значения параметров программно, это зависит только от того, как вы связываете свой отчет, источник данных и т. Д. Ниже я проиллюстрировал 2 варианта, но это действительно зависит от ваших настроек, какой из них будет работать для вас.
// Assuming "GA_PANEL" is the name of your parameter this is the simplest way to set it but depends on how you are binding the report
crtrptPanelStudyAuditTrail.SetParameterValue("GA_PANEL", "GA_PANEL;" + txtPanelStudy.ToString().Trim() + ";True");
// Second method gives more flexibility in the types of parameters such as date, discrete, multi, etc.
// Create a parameter value
var paramVal = new ParameterDiscreteValue();
paramVal.Value = "GA_PANEL;" + txtPanelStudy.ToString().Trim() + ";True");
// Clear the current and default values from your parameter
crtrptPanelStudyAuditTrail.ParameterFields["GA_PANEL"].CurrentValues.Clear();
crtrptPanelStudyAuditTrail.ParameterFields["GA_PANEL"].DefaultValues.Clear();
// Add your values to the parameter value collection
crtrptPanelStudyAuditTrail.ParameterFields["GA_PANEL"].CurrentValues.Add(paramVal);
crtrptPanelStudyAuditTrail.ParameterFields["GA_PANEL"].HasCurrentValue = true;
// Refresh your report
Я не знаю много VB6 и ничего о Crystal, но эквивалентный код в C# должен выглядеть примерно так:
crtrptPanelStudyAuditTrail.ParameterFields [0] = @ "GA_PANEL;" + txtPanelStudy.Trim () + @ "; True";
crtrptPanelStudyAuditTrail.ParameterFields [1] = @ "GA_PANEL_LEG;" + txtPanelLeg.Trim () + @ "; True";
Вам не нужно конвертировать txtPanelStudy и txtPanelLeg, так как они уже являются строками.