Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: dr4 en 27 Mayo 2015, 18:09 pm



Título: datasets en c# me dan problemas
Publicado por: dr4 en 27 Mayo 2015, 18:09 pm
Muy buenas, espero conseguir explicar mi problema porque ya van 2 días trabajando con esto y no consigo entenderlo:



tengo un dataset que recoge los datos de una base de datos, ese dataset lo convierto en un datatable y se lo paso a un gridview



pass = pasarTabla1.Tables[0];



 dataListado.DataSource = OShare.pass;





bien, ahora según entiendo ahí creo una conexión entre los dos ¿no? si cambio algo en el datagridview pasarTabla1 recibira el cambio y si cambio algo en pasarTabla1 el datagridview recibe el cambio aunque yo no ponga nada por ningún lado (al menos es lo que yo entiendo que está ocurriendo ya que solo le asigno "pasarTabla1" a "Pass" al principio pero cada vez que algo cambia este cambia en mi datagridview).







después necesito agregar a esa base de datos cosas de otra base de datos, probé a usar ".merge" pero lo único que consigo es que se agregue todo lo de la segunda base de datos a la primera de manera infinita cada vez que le doy al botón, se supone que es porque el número de columnas de la segunda tabla no coincide con el de la primera, así que probe a hacer esto:





Código:
DataSet copy = new DataSet();          
 copy = pasarTabla1;      
      copy.Merge(pasarTabla2, false, MissingSchemaAction.Ignore);          

 copy.AcceptChanges();    
        pasarTabla1.Merge(copy,false);






primero comparo copy con pasarTabla2 que es la que tiene los datos que quiero agregar, (en ese punto se agregan los datos directamente a mi datagridview y no entiendo porqué ya que según había entendido datagridview estaba conectado con pasarTabla1 y eso es una copia!), después aprovechando que ahora copy y pasarTabla1 tienen el mismo formato los vuelvo a comparar para descartar las  igualdades pero lejos de darme las diferencias solo me agrega a la tabla lo que tiene "pasarTabla2" esté repetido o no, y una vez mas no consigo entender porqué , os pongo unas imaganes:

ya he cogido los datos de la segunda base de datos y la he guardado en la primera(son los 4 ultimos):



http://s23.postimg.org/vzkb3yk0b/image.jpg



si le vuelvo a dar al boton ese merge me devuelve solo los datos de la segunda tabla, estén ya en la primera o no, y lo hace de manera infinita:



http://s18.postimg.org/q1ynm2c9l/image.jpg





y al hacer el update de la base de datos esta intenta actualizar TODOS los datos (incluidos los que están repetidos varias veces, me guarda los que no,pero es un proceso lento en el que pierde el tiempo tratando de meter muchos datos que ya tiene)


Código:
try      {     cmdBuilder = new SqlCommandBuilder(adapter);      

                  cmdBuilder.GetUpdateCommand();                

       changes = ds.GetChanges();                    

   if (changes != null)                        {  

                         try                          

  {                                adapter.ContinueUpdateOnError = true;

                               adapter.Update(changes);                

               Console.WriteLine("Changes DoOoOoOoOoOoOoOOOOOOOOOOOOOOOOOOOOOOOONE");  

                         }                            catch (Exception ex)                            {

                               Console.WriteLine(ex.ToString());                            }                        }                    }                    catch (Exception ex)                    {                                   }





ya no sé que mas hacer,llevo 2 días rompiendome la cabeza con esto y he llegado a la tercera pagina de google, espero que alguien pueda ayudarme a entender y solucionarlo