水晶报表错误:“内存已满。内存不足,无法进行操作。”

时间:2019-05-15 08:44:12

标签: c# crystal-reports out-of-memory

我正在使用VS2013和Crystal Report 2013

我正在将30个参数传递给Crystal报告。

它可以正常工作5次,然后出现下一个错误:-

  

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

到目前为止我尝试过的事情:-

使用CrystalReport1.Refresh();却无法解决问题。

感谢任何帮助。

编辑1:-

我知道也许我的问题缺少信息,但是我认为没有任何细节可以帮助您,在这里您可以通过任何方式获得额外的信息,我希望它会有所帮助。

我接下来要申请:-

enter image description here

当我单击“打印”时,下一个可以正常使用

enter image description here

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

enter image description here

编辑2:-

我的代码是:-

1)创建新表单并拖放Crystal Report Viewer。

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();

1 个答案:

答案 0 :(得分:0)

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

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