Skip to Content
0
Former Member
Nov 24, 2008 at 08:12 PM

Converting from RDC to .NET, what is the replacement for NeedsCurrentValue?

39 Views

Hi,

I am converting our RDC codes (C++) to .NET because RDC is not longer supported in Crystal Report 2008. In RDC, we used NeedsCurrentValue function to determine whether a repport parameter is required. I am not able to locate the NeedsCurrentValue in the .NET SDK, what should be used in the .NET SDK? Will ParameterFieldUsage2 do?

In my testing report, I have a Boolean flag with default value set to False. When I use the following codes to query the report, the DefaultValues returned is the list of True and False. How can I obtain the default value False that of this flag?

ReportDocument^ boReportDocument = gcnew ReportDocument();
    boReportDocument->Load("C:\\tmp\\myTest.rpt");
    boReportDocument->SetDatabaseLogon("myUser", "myPass", "myDB", "");
    ParameterFields^ pfs = boReportDocument->ParameterFields;
    long lCnt = pfs->Count;

    for (int i=0; i < lCnt; i++)
    {
        ParameterField^ pfds = pfs<i>;
        Console::WriteLine("AllowCustomValues " + pfds->AllowCustomValues);
        Console::WriteLine("CurrentValues " + pfds->CurrentValues);
        Console::Write("CurrentValues.Count ");
        Console::WriteLine(pfds->CurrentValues->Count);
        Console::Write("DefaultValueDisplayType ");
        Console::WriteLine( pfds->DefaultValueDisplayType);
        Console::WriteLine("DefaultValues " + pfds->DefaultValues);
        Console::Write("DefaultValues.Count ");
        Console::WriteLine(pfds->DefaultValues->Count);
        if (pfds->DefaultValues->Count > 0)
        {
            for (int j=0; j < pfds->DefaultValues->Count; j++)
            {
                Console::Write("DefaultValues[");
                Console::Write(j);
                Console::Write("]");
                Console::Write(pfds->DefaultValues[j] + ", Description:");
                Console::Write(pfds->DefaultValues[j]->Description + ", Kind:");
                Console::Write(pfds->DefaultValues[j]->Kind);
                if (pfds->DefaultValues[j]->Kind == DiscreteOrRangeKind::DiscreteValue)
                {
                    Console::Write(", Value:");
                    Console::WriteLine(((ParameterDiscreteValue^)pfds->DefaultValues[j])->Value);
                }
            }
        }
        Console::Write("DiscreteOrRangeKind ");
        Console::WriteLine(pfds->DiscreteOrRangeKind);
        Console::WriteLine("EnableAllowEditingDefaultValue " + pfds->EnableAllowEditingDefaultValue);
        Console::WriteLine("EnableAllowMultipleValue " + pfds->EnableAllowMultipleValue);
        Console::WriteLine("EnableNullValue " + pfds->EnableNullValue);
        Console::WriteLine("HasCurrentValue " + pfds->HasCurrentValue);
        Console::WriteLine("IsOptionalPrompt " + pfds->IsOptionalPrompt);
        Console::WriteLine("Name " + pfds->Name);
        Console::WriteLine("ParameterFieldName " + pfds->ParameterFieldName);
        Console::Write("ParameterFieldUsage2 ");
        Console::WriteLine(pfds->ParameterFieldUsage2);
        if (pfds->ParameterFieldUsage2 == ParameterFieldUsage2::NotInUse)
            Console::WriteLine("Usage2 NotInUse");
        Console::Write("ParameterType ");
        Console::WriteLine(pfds->ParameterType);
        Console::Write("ParameterValueKind ");
        Console::WriteLine(pfds->ParameterValueKind);
        Console::Write("ParameterValueType ");
        Console::WriteLine(pfds->ParameterValueType);
        Console::Write("PromptingType ");
        Console::WriteLine(pfds->PromptingType);
        Console::WriteLine("PromptText " + pfds->PromptText);
        Console::WriteLine("ReportName " + pfds->ReportName);
        Console::Write("ReportParameterType ");
        Console::WriteLine(pfds->ReportParameterType);
        Console::Write("pfds->CurrentValues->IsNoValue ");
        Console::WriteLine(pfds->CurrentValues->IsNoValue);
        Console::WriteLine("");
    }
    boReportDocument->Close();

Output from the codes above:

AllowCustomValues False

CurrentValues CrystalDecisions.Shared.ParameterValues

CurrentValues.Count 0

DefaultValueDisplayType DescriptionAndValue

DefaultValues CrystalDecisions.Shared.ParameterValues

DefaultValues.Count 2

DefaultValues[0]CrystalDecisions.Shared.ParameterDiscreteValue, Description:, Kind:DiscreteValue, Value:True

DefaultValues[1]CrystalDecisions.Shared.ParameterDiscreteValue, Description:, Kind:DiscreteValue, Value:False

DiscreteOrRangeKind DiscreteValue

EnableAllowEditingDefaultValue False

EnableAllowMultipleValue False

EnableNullValue False

HasCurrentValue False

IsOptionalPrompt False

Name Cancellation

ParameterFieldName Cancellation

ParameterFieldUsage2 InUse

ParameterType ReportParameter

ParameterValueKind BooleanParameter

ParameterValueType BooleanParameter

PromptingType DiscreteValue

PromptText Cancellation? (True/False)

ReportName

ReportParameterType ReportParameter

pfds->CurrentValues->IsNoValue False

Thanks for any suggestion in advance.

Kin H Chan