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, так как они уже являются строками.

Другие вопросы по тегам