doorgeven van parameters in crystal reports-rapport

Ben ik het creëren van crytal verslag van een opgeslagen procedure ,dit werkt prima als ik langs een parameter, maar het geeft een fout

“onjuiste parameter “

wanneer ik passeer twee parameters
mijn code is

 {
    ReportDocument reportDocument = new ReportDocument();
    ParameterField paramField = new ParameterField();
    ParameterFields paramFields = new ParameterFields();
    ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();

    paramField.Name = "@Dept";
    paramDiscreteValue.Value = TextBox1.Text.ToString();
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);

    paramField.Name = "@Name";
    paramDiscreteValue.Value = TextBox2.Text.ToString();
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);

    CrystalReportViewer1.ParameterFieldInfo = paramFields;
    reportDocument.Load(Server.MapPath("CrystalReport.rpt"));
    CrystalReportViewer1.ReportSource = reportDocument;
    reportDocument.SetDatabaseLogon("sa", "sa", "OPWFMS-7KYGZ7SB", "test");

}

laat het me weten wijzigingen

  • Alleen voor uw informatie, klinkers gratis hier.
InformationsquelleAutor | 2009-06-17

 

5 Replies
  1. 8

    Je nodig hebt voor het maken van nieuwe parameterField en de waarde van beide parameters. Uw huidige code voegt parameter wijzigt (verander de naam en waarde) en voegt nogmaals op hetzelfde object. Dit moet corrigeren:

     {
    ReportDocument reportDocument = new ReportDocument();
    
    ParameterFields paramFields = new ParameterFields();
    //ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
    
    ParameterField paramField = new ParameterField();
    ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
    paramField.Name = "@Dept";
    paramDiscreteValue.Value = TextBox1.Text.ToString();
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);
    
    paramField = new ParameterField(); //<-- This line is added
    paramDiscreteValue = new ParameterDiscreteValue();  //<-- This line is added
    paramField.Name = "@Name";
    paramDiscreteValue.Value = TextBox2.Text.ToString();
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);
    
    CrystalReportViewer1.ParameterFieldInfo = paramFields;
    reportDocument.Load(Server.MapPath("CrystalReport.rpt"));
    CrystalReportViewer1.ReportSource = reportDocument;
    reportDocument.SetDatabaseLogon("sa", "sa", "OPWFMS-7KYGZ7SB", "test");

    }

    EDIT:
    Fout vermeld in het commentaar is waarschijnlijk omdat er twee definities van variabele paramField of paramDiscreteValue in de code. In een c# – methode kun je niet definiëren variabele met dezelfde naam meer dan één keer.
    Probeer bovenstaande code, zoals het geschreven is, en als u nog steeds compiler fout, neem dan plak hier de volledige tekst.

    • nee het werkt niet er is een fout dat paramField paramDiscreteValue zijn al gedefinieerd
    • Yup. Er zijn twee definities van ParameterDiscreteValue. Ik zal commentaar geven extra lijn.
    • Dit is niet dezelfde fout als voorheen? In die lijn? Gelieve te posten volledige tekst. Is deze compiler of runtime-fout?
    • dit is niet complile fout rapport te genereren, maar in het rapport is geschreven “in de juiste parameter”
    • Dan moet je als parameter namen in de code (@Dept en @Naam) zijn dezelfde als parameter namen in Crystal reports-rapport. Controleer ook soorten – beide parameters in de code zijn snaren, zie dat verslag wordt ook verwacht van string-waarden.
    • ik hav veel keer dat het rapport wordt gegenereerd voor één parameter is er geen probleem, toch bedankt voor je hulp
    • hallo ik m echt sorry whn voeg ik nre parameter in mijn code ,ik dacht dat het direct toevoegen in het rapport, maar het was er nu everythng is fijn sorry agn
    • kunt u mij helpen ik heb hetzelfde probleem ik kan niet uitvoeren crystal reports-rapport wanneer ik langs de parameters van crystal reports-rapporten weergeven ding leeg scherm verscheen , dit is de link stackoverflow.com/questions/59095828/…
    • ik gebruikte de oplossing, precies zoals het is, maar wanneer ik klik op de knop afdrukken zijn niet weergegeven in het rapport alleen lege pagina?? neem ik uw hulp nodig

  2. 5

    Dit proberen het een beetje meer beknopt

    {    
      ReportDocument reportDocument = new ReportDocument();
    
      reportDocument.Load(Server.MapPath("CrystalReport.rpt"));
      CrystalReportViewer1.ReportSource = reportDocument;
      reportDocument.SetParameterValue("@Dept", TextBox1.Text.ToString());    
      reportDocument.SetParameterValue("@Name", TextBox2.Text.ToString());
    
     //CrystalReportViewer1.ParameterFieldInfo = paramFields;
    
      reportDocument.SetDatabaseLogon("sa", "sa", "OPWFMS-7KYGZ7SB", "test");
    }
  3. 2

    Zorg ervoor dat de werkelijke gegevens worden doorgegeven in de parameters niet stilzwijgend omgezet naar het juiste gegevenstype. Als u het passeren van een numeriek ID voor de @Dept parameter, zorg ervoor dat de gegevens type van de invoer parameter die verwacht te ontvangen van de waarde is een numerieke type.

  4. 2

    Probeert te maken van de ParameterField voor elke parameter die u wilt toevoegen aan het rapport:

    paramField = new ParameterField();
    paramDiscreteValue.Value = ...
    ...
    • nee het werkt niet er is een fout dat paramField en paramDiscreteValue zijn al gedefinieerd
  5. 0

    Het probleem kan worden gerepliceerd met Crystal Reports voor Visual Studio 2005. De tijdelijke oplossing is om de ReportSource properpty van de CrystalReportViewer eerste, dan moet je de parameter waarden. Dus uw code moet worden:

    {
    ReportDocument reportDocument = new ReportDocument();
    
    CrystalReportViewer1.ReportSource = reportDocument;
    
    ParameterField paramField = new ParameterField();
    ParameterFields paramFields = new ParameterFields();
    ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
    
    paramField.Name = "@Dept";
    paramDiscreteValue.Value = TextBox1.Text.ToString();
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);
    
    paramField.Name = "@Name";
    paramDiscreteValue.Value = TextBox2.Text.ToString();
    paramField.CurrentValues.Add(paramDiscreteValue);
    paramFields.Add(paramField);
    
    CrystalReportViewer1.ParameterFieldInfo = paramFields;
    reportDocument.Load(Server.MapPath("CrystalReport.rpt"));
    reportDocument.SetDatabaseLogon("sa", "sa", "OPWFMS-7KYGZ7SB", "test");
    }

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *