markwhite1 Ответов: 1

Экспорт crystal report в PDF дает недостающие значения параметров


Привет,
Я пытаюсь экспортировать отчет crystal, чтобы отправить его по почте. Я использовал :
printbanqoute.ExportToDisk(ExportFormatType.PortableDocFormat, "E:\\ASD.pdf");

Однако я получаю ошибку "отсутствующие значения параметров".
Без использования ExportToDisc он работает нормально.
Я использовал 4 параметра и проверил, что каждый из них имеет значения, вот как я использовал :
ParameterFields paramFields = new ParameterFields();
                ParameterField paramField = new ParameterField();
                ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
                paramField.Name = "phoneno";
                paramDiscreteValue.Value = BLDashboard.phoneno;
                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 = BLDashboard.custname;
                paramField.CurrentValues.Add(paramDiscreteValue);
                paramFields.Add(paramField);

                paramField = new ParameterField(); // <-- This line is added
                paramDiscreteValue = new ParameterDiscreteValue();  // <-- This line is added
                paramField.Name = "address";
                paramDiscreteValue.Value = BLDashboard.add;
                paramField.CurrentValues.Add(paramDiscreteValue);
                paramFields.Add(paramField);

                paramField = new ParameterField(); // <-- This line is added
                paramDiscreteValue = new ParameterDiscreteValue();  // <-- This line is added
                paramField.Name = "email";
                paramDiscreteValue.Value = BLDashboard.email;
                paramField.CurrentValues.Add(paramDiscreteValue);
                paramFields.Add(paramField);

                crystalReportViewer1.ParameterFieldInfo = paramFields;


Я погуглил, и кто-то сказал setdatasource перед передачей vlaue параметру, я тоже попробовал это сделать, но он не проснулся.
Пожалуйста, heclp застрял на этом в течение нескольких дней.
Спасибо

Что я уже пробовал:

Я пробовал проверять каждое значение параметра, находясь в точке останова. И различные коды, такие как
try
{
    // Export the Report to Response stream in PDF format and file name Customers
    //printbanqoute.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Customers");
    printbanqoute.ExportToHttpResponse(ExportFormatType.PortableDocFormat, response, true, "Quotation");
    // There are other format options available such as Word, Excel, CVS, and HTML in the ExportFormatType Enum given by crystal reports
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
    ex = null;
}


Но получает ошибку при "ответе" - имя "ответ" не существует в текущем контексте

Afzaal Ahmad Zeeshan

Какая ошибка?

markwhite1

Имя "ответ" не существует в текущем контексте

Richard MacCutchan

Тогда вам нужно выяснить, почему нет. Никто здесь не может догадаться, откуда он взялся. Вы уверены, что написали его правильно?

Richard Deeming

C# чувствителен к регистру - response это не то же самое, что Response.

markwhite1

Я пробовал и то, и другое, однако моя главная проблема заключается в том, почему он показывает "отсутствующее значение параметра". Если бы это было отсортировано, я думаю, что это было бы экспортировано, я прав?

1 Ответов

Рейтинг:
4

markwhite1

Я в состоянии решить свою проблему. Я писал все коды в событии 'crystalviewer1_Load', то есть экспортировал и отправлял электронную почту, а также заполнял данные в crystal report. Поэтому мне пришлось создать кнопку электронной почты для экспорта и электронной почты.
Вот мой код для экспорта и электронной почты, Button1-это кнопка электронной почты на crystalviewer:

private void button1_Click(object sender, EventArgs e)
 {
     try
     {
         billprint.ExportToDisk(ExportFormatType.PortableDocFormat, "E:\\" + filename);
     }
     catch(Exception ex)
     {
         MessageBox.Show(ex.ToString());

     }
     try
     {
         MailMessage mm = new MailMessage();
         string toemail = BLDashboard.email;
         string custnm = BLDashboard.custname;

         mm.From = new MailAddress("operations@kaem.in", "Kashif Ahhmed");
         mm.To.Add(new MailAddress(toemail, custnm));
         mm.IsBodyHtml = true;
         string name = BLDashboard.custname;
         mm.Subject = "Bill from Indian Restaurant";
         //mm.Body = "Testing Crsytel Report Attachment send via Email";

         String Body = "<div>Hello " + name + ",<br> Thank you for considersing us for your next Party/Event, here is the Bill for the Party/Event.<br> If any queries you can reach us at 6096464445. <br> Thank You</div>";
         mm.Body = Body;
         //mm.Attachments.Add(new Attachment(rpt.ExportToStream(ExportFormatType.PortableDocFormat), fileName));
         mm.Attachments.Add(new Attachment("E:\\" + filename));



         SmtpClient sc = new SmtpClient("smtp.kaem.in");
         sc.Credentials = new NetworkCredential("emailadd", "*********");
         sc.Send(mm);
         // MailMessage msg = mm.CreateMailMessage("mr.markwhite1@gmail.com", replacements, Body, new System.Web.UI.Control());
         MessageBox.Show("Email successfully sent to " + toemail);
     }
     catch (Exception e1)
     {

         MessageBox.Show("Unable to send email to mr.markwhite1@gmail.com due to following error:\n\n" + e1.Message, "Email send error", MessageBoxButtons.OK, MessageBoxIcon.Error);

         //{
         //    this.SendEmail(emailId, subject, body, rpt, fileName);
         //}
     }
 }