首页 > 解决方案 > Crystal 报告错误:“内存已满。没有足够的内存进行操作。”

问题描述

我正在使用 VS2013 和水晶报告 2013

我将 30 个参数传递给水晶报表。

它工作正常5次,然后我收到下一个错误:-

内存已满。没有足够的内存进行操作。

到目前为止我尝试了什么: -

CrystalReport1.Refresh();在没有解决问题的情况下使用。

感谢任何帮助。

编辑1: -

我知道我的问题可能缺乏信息,但我认为没有任何细节可以帮助你,这里的任何方式都是额外的信息,我希望它会有用。

我有下一个申请:-

在此处输入图像描述

当我单击打印时,它工作正常,下一个

在此处输入图像描述

如果我关闭窗口并再次按打印,它可以正常工作 5 或 6 次,然后我遇到下一个错误:-

在此处输入图像描述

编辑2: -

我的代码是:-

1)创建新表单并拖放水晶报表查看器。

2)在加载事件中,我编写了下一个代码:-

private void frmReport_Load(object sender, EventArgs e)
{
    try
    {
        CrystalReport11.SetParameterValue("pName", PatientName);
        CrystalReport11.SetParameterValue("pAge", Age);
        CrystalReport11.SetParameterValue("pDate", Date);
        CrystalReport11.SetParameterValue("P1", Number1);
        CrystalReport11.SetParameterValue("P2", Number2);
        CrystalReport11.SetParameterValue("P3", Number3);
        CrystalReport11.SetParameterValue("P4", Number4);
        CrystalReport11.SetParameterValue("P5", Number5);
        CrystalReport11.SetParameterValue("P6", Number6);
        CrystalReport11.SetParameterValue("P7", Number7);
        CrystalReport11.SetParameterValue("pDrugsName1", DrugName1);
        CrystalReport11.SetParameterValue("pDrugsName2", DrugName2);
        CrystalReport11.SetParameterValue("pDrugsName3", DrugName3);
        CrystalReport11.SetParameterValue("pDrugsName4", DrugName4);
        CrystalReport11.SetParameterValue("pDrugsName5", DrugName5);
        CrystalReport11.SetParameterValue("pDrugsName6", DrugName6);
        CrystalReport11.SetParameterValue("pDrugsName7", DrugName7);
        CrystalReport11.SetParameterValue("pQTY1", QTY1);
        CrystalReport11.SetParameterValue("pQTY2", QTY2);
        CrystalReport11.SetParameterValue("pQTY3", QTY3);
        CrystalReport11.SetParameterValue("pQTY4", QTY4);
        CrystalReport11.SetParameterValue("pQTY5", QTY5);
        CrystalReport11.SetParameterValue("pQTY6", QTY6);
        CrystalReport11.SetParameterValue("pQTY7", QTY7);
        CrystalReport11.SetParameterValue("pTimeOfUse1", TimeOfUse1);
        CrystalReport11.SetParameterValue("pTimeOfUse2", TimeOfUse2);
        CrystalReport11.SetParameterValue("pTimeOfUse3", TimeOfUse3);
        CrystalReport11.SetParameterValue("pTimeOfUse4", TimeOfUse4);
        CrystalReport11.SetParameterValue("pTimeOfUse5", TimeOfUse5);
        CrystalReport11.SetParameterValue("pTimeOfUse6", TimeOfUse6);
        CrystalReport11.SetParameterValue("pTimeOfUse7", TimeOfUse7);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

我正在通过下一个代码调用表单:-

    DrugName1 = (txtDrugsName1.Text == string.Empty) ? " " : txtDrugsName1.Text;
    DrugName2 = (txtDrugsName2.Text == string.Empty) ? " " : txtDrugsName2.Text;
    DrugName3 = (txtDrugsName3.Text == string.Empty) ? " " : txtDrugsName3.Text;
    DrugName4 = (txtDrugsName4.Text == string.Empty) ? " " : txtDrugsName4.Text;
    DrugName5 = (txtDrugsName5.Text == string.Empty) ? " " : txtDrugsName5.Text;
    DrugName6 = (txtDrugsName6.Text == string.Empty) ? " " : txtDrugsName6.Text;
    DrugName7 = (txtDrugsName7.Text == string.Empty) ? " " : txtDrugsName7.Text;


    Number1 = (txtDrugsName1.Text == string.Empty) ? " " : "1";
    Number2 = (txtDrugsName2.Text == string.Empty) ? " " : "2";
    Number3 = (txtDrugsName3.Text == string.Empty) ? " " : "3";
    Number4 = (txtDrugsName4.Text == string.Empty) ? " " : "4";
    Number5 = (txtDrugsName5.Text == string.Empty) ? " " : "5";
    Number6 = (txtDrugsName6.Text == string.Empty) ? " " : "6";
    Number7 = (txtDrugsName7.Text == string.Empty) ? " " : "7";


    QTY1 = (cmbQTY1.Text == string.Empty) ? " " : cmbQTY1.Text;
    QTY2 = (cmbQTY2.Text == string.Empty) ? " " : cmbQTY2.Text;
    QTY3 = (cmbQTY3.Text == string.Empty) ? " " : cmbQTY3.Text;
    QTY4 = (cmbQTY4.Text == string.Empty) ? " " : cmbQTY4.Text;
    QTY5 = (cmbQTY5.Text == string.Empty) ? " " : cmbQTY5.Text;
    QTY6 = (cmbQTY6.Text == string.Empty) ? " " : cmbQTY6.Text;
    QTY7 = (cmbQTY7.Text == string.Empty) ? " " : cmbQTY7.Text;

    TimeOfUse1 = (cmbTimeOfUse1.Text == string.Empty) ? " " : cmbTimeOfUse1.Text;
    TimeOfUse2 = (cmbTimeOfUse2.Text == string.Empty) ? " " : cmbTimeOfUse2.Text;
    TimeOfUse3 = (cmbTimeOfUse3.Text == string.Empty) ? " " : cmbTimeOfUse3.Text;
    TimeOfUse4 = (cmbTimeOfUse4.Text == string.Empty) ? " " : cmbTimeOfUse4.Text;
    TimeOfUse5 = (cmbTimeOfUse5.Text == string.Empty) ? " " : cmbTimeOfUse5.Text;
    TimeOfUse6 = (cmbTimeOfUse6.Text == string.Empty) ? " " : cmbTimeOfUse6.Text;
    TimeOfUse7 = (cmbTimeOfUse7.Text == string.Empty) ? " " : cmbTimeOfUse7.Text;

    frmReport obj = new frmReport(
                                txtPatientName.Text, 
                                nudAge.Value.ToString(), 
                                dtpDate.Text,
                                DrugName1,
                                DrugName2,
                                DrugName3,
                                DrugName4,
                                DrugName5,
                                DrugName6,
                                DrugName7,
                                QTY1,
                                QTY2,
                                QTY3,
                                QTY4,
                                QTY5,
                                QTY6,
                                QTY7,
                                TimeOfUse1,
                                TimeOfUse2,
                                TimeOfUse3,
                                TimeOfUse4,
                                TimeOfUse5,
                                TimeOfUse6,
                                TimeOfUse7,
                                Number1,
                                Number2,
                                Number3,
                                Number4,
                                Number5,
                                Number6,
                                Number7
                               );
    obj.ShowDialog();

标签: c#crystal-reportsout-of-memory

解决方案


我遇到了同样的问题,这也对我有用:

into frmReport_FormClosing Type crystalReportViewer1.Dispose(); and CrystalReport11.Dispose();

推荐阅读