2011-10-26 25 views
0

如何避免「DataTable分配給其他數據集」錯誤,因爲方法「RetornarReporteErroresBoleta」是將數據集添加到數據集中,然後,當方法「RetornarBoletasPorASA」獲取DataTable並嘗試插入到新的DataSet中發生此錯誤。那麼我該如何解決這個問題呢?DataTable分配給其他數據集錯誤

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; 
} 

回答

3

您不能添加DataTable到多個DataSet。試試這個:

erroresBoleta.Tables.Add(tablaErrores.Copy()); 
相關問題