DataTable 被分配给其他 DataSet 错误

发布于 2024-12-11 19:03:14 字数 2395 浏览 0 评论 0原文

如何避免错误“DataTable 已分配给其他 DataSet”,因为方法“RetornarReporteErroresBoleta”正在将 DataTable 添加到 DataSet 中,然后,当方法“RetornarBoletasPorASA”获取 DataTable 并尝试插入到新的 DataSet 时,会发生此错误错误。那么我该如何解决这个问题?

public DataTable RetornarReporteErroresBoleta(SqlString idBoleta)
{
    DataTable tablaErrores = new DataTable();
    string procedimiento = "paBltMarcarErroresBoleta";

    try
    {
        Database accesoBd = this.gBaseDatosCnx.GenerarAccesoBaseDatosSgapa();
        object[] parametros = { idBoleta.Value };

        DataSet dsResultado = accesoBd.ExecuteDataSet(procedimiento, parametros);
        int cantidadFilas = dsResultado.Tables[0].Rows.Count;

        tablaErrores = dsResultado.Tables[0];
    }
    catch (Exception exc)
    {
        string mensaje = "Mensaje: " + exc.Message + "\n";
        mensaje += "Origen: " + exc.Source + "\n";
        mensaje += "Pila: " + exc.StackTrace;

        try
        {
            clsCorreoCom correo = new clsCorreoCom();
            string titulo = "Problema en: " + procedimiento;
            correo.enviarCorreo(titulo, mensaje, clsCorreoCom.MENSAJE_ERROR);
        }
        catch (Exception) { }
    }

    return tablaErrores;
}


public DataSet RetornarBoletasPorASA(SqlString idASA)
{
    DataSet erroresBoleta = new DataSet();
    string procedimiento = "paBltBuscarBoletasASA";

    try
    {          
        Database accesoBd = this.gBaseDatosCnx.GenerarAccesoBaseDatosSgapa();
        object[] parametros = { idASA.Value };

        DataSet dsResultado = accesoBd.ExecuteDataSet(procedimiento, parametros);
        int cantidadFilas = dsResultado.Tables[0].Rows.Count;
        foreach (DataRow fila in dsResultado.Tables[0].Rows) 
        {
            string idBoleta = fila[1].ToString();

            DataTable tablaErrores = RetornarReporteErroresBoleta(idBoleta);

            erroresBoleta.Tables.Add(tablaErrores);
        }
    }
    catch (Exception exc)
    {
        string mensaje = "Mensaje: " + exc.Message + "\n";
        mensaje += "Origen: " + exc.Source + "\n";
        mensaje += "Pila: " + exc.StackTrace;

        try
        {
            clsCorreoCom correo = new clsCorreoCom();
            string titulo = "Problema en: " + procedimiento;
            correo.enviarCorreo(titulo, mensaje, clsCorreoCom.MENSAJE_ERROR);
        }
        catch (Exception) { }
    }

    return erroresBoleta;
}

How can avoid the error "The DataTable is assigned to other DataSet", because the method "RetornarReporteErroresBoleta" is adding the Datatable into a DataSet, then, when the method "RetornarBoletasPorASA" get the DataTable and try to insert into a new DataSet occurs this error. So how can I fix this??

public DataTable RetornarReporteErroresBoleta(SqlString idBoleta)
{
    DataTable tablaErrores = new DataTable();
    string procedimiento = "paBltMarcarErroresBoleta";

    try
    {
        Database accesoBd = this.gBaseDatosCnx.GenerarAccesoBaseDatosSgapa();
        object[] parametros = { idBoleta.Value };

        DataSet dsResultado = accesoBd.ExecuteDataSet(procedimiento, parametros);
        int cantidadFilas = dsResultado.Tables[0].Rows.Count;

        tablaErrores = dsResultado.Tables[0];
    }
    catch (Exception exc)
    {
        string mensaje = "Mensaje: " + exc.Message + "\n";
        mensaje += "Origen: " + exc.Source + "\n";
        mensaje += "Pila: " + exc.StackTrace;

        try
        {
            clsCorreoCom correo = new clsCorreoCom();
            string titulo = "Problema en: " + procedimiento;
            correo.enviarCorreo(titulo, mensaje, clsCorreoCom.MENSAJE_ERROR);
        }
        catch (Exception) { }
    }

    return tablaErrores;
}


public DataSet RetornarBoletasPorASA(SqlString idASA)
{
    DataSet erroresBoleta = new DataSet();
    string procedimiento = "paBltBuscarBoletasASA";

    try
    {          
        Database accesoBd = this.gBaseDatosCnx.GenerarAccesoBaseDatosSgapa();
        object[] parametros = { idASA.Value };

        DataSet dsResultado = accesoBd.ExecuteDataSet(procedimiento, parametros);
        int cantidadFilas = dsResultado.Tables[0].Rows.Count;
        foreach (DataRow fila in dsResultado.Tables[0].Rows) 
        {
            string idBoleta = fila[1].ToString();

            DataTable tablaErrores = RetornarReporteErroresBoleta(idBoleta);

            erroresBoleta.Tables.Add(tablaErrores);
        }
    }
    catch (Exception exc)
    {
        string mensaje = "Mensaje: " + exc.Message + "\n";
        mensaje += "Origen: " + exc.Source + "\n";
        mensaje += "Pila: " + exc.StackTrace;

        try
        {
            clsCorreoCom correo = new clsCorreoCom();
            string titulo = "Problema en: " + procedimiento;
            correo.enviarCorreo(titulo, mensaje, clsCorreoCom.MENSAJE_ERROR);
        }
        catch (Exception) { }
    }

    return erroresBoleta;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

懵少女 2024-12-18 19:03:14

您无法将 DataTable 添加到多个 DataSet。试试这个:

erroresBoleta.Tables.Add(tablaErrores.Copy());

You can't add a DataTable to more than one DataSet. Try this instead:

erroresBoleta.Tables.Add(tablaErrores.Copy());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文