2011-10-26 14 views
0

"RetornarReporteErroresBoleta"メソッドがDataSetにデータテーブルを追加しているので、 "RetornarBoletasPorASA"メソッドがDataTableを取得すると "DataTableが他のDataSetに割り当てられています"というエラーを回避する方法新しいDataSetに挿入しようとすると、このエラーが発生します。どうすればこの問題を解決できますか?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; 
} 

答えて

3

あなたは、複数のDataSetDataTableを追加することはできません。代わりにこれを試してください:

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