C sharp - comparar dos datasets

 
Vista:
sin imagen de perfil

comparar dos datasets

Publicado por dr4 (4 intervenciones) el 25/05/2015 01:10:42
muy buenas a todos:

Hoy necesito ayuda mas que nunca, llevo todo el día tratando de conseguir que la información de dos datasets me actualicen un dataGridView que a su vez actualiza una base de datos, el problema es que no consigo hacer una comparación y que solo me devuelva los elementos que no tienen en común, puedo crear un tercer dataset que tiene todos elementos pero para meterla tengo que borrar la información actual y cargar la nueva con lo que consigo que me dé un error al intentar meter esa información en la base de datos porque hay datos repetidos.


1
2
3
4
5
6
7
8
9
10
11
12
public static void CompareDataSets()
        {
 
 
            pasarTabla1.Merge(pasarTabla2  ,false, MissingSchemaAction.Ignore);
            dsDifferences = pasarTabla1.GetChanges();
 
            StringWriter prueba = new StringWriter();
            dsDifferences.WriteXml(prueba);
 
 
        }


también he intentado usar dos xml (uno de cada base de datos) y compararlos, sin obtener ningún resultado que me sirva



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
public static void CompareXml()
        {
 
 
            XmlWriter writexml;
 
            StringWriter sw = new StringWriter();
 
 
            var node1 = XElement.Parse(Xml1).CreateReader();
            var node2 = XElement.Parse(Xml2).CreateReader();
 
 
            var result = new XDocument();
            var writer = result.CreateWriter();
 
            var diff = new Microsoft.XmlDiffPatch.XmlDiff();
            diff.Compare(node1, node2, writer);
            writer.Flush(); writer.Close();
 
            string resultadoCompare;
            resultadoCompare = result.ToString();
 
            XmlPatch xmlPatch = new XmlPatch();
 
 
            /* try
             {*/
 
 
 
 
            XmlDocument xml = new XmlDocument();
            xml.LoadXml(Xml1);
 
 
            XmlReader reader = XmlReader.Create(new StringReader(resultadoCompare));
 
 
 
 
 
 
            // XmlReader diffgramReader = new XmlTextReader(resultadoCompare);
 
            xmlPatch.Patch(xml, reader);
 
 
 
            StringWriter sw2 = new StringWriter();
 
            string inner = reader.ReadInnerXml();
 
 
 
            // XmlTextWriter output = new XmlTextWriter(Xml1, Encoding.Unicode);
            StringWriter sw1 = new StringWriter();
            XmlTextWriter output1 = new XmlTextWriter(sw1);
            xml.Save(output1);
            output1.Close();
 
 
 
            StringBuilder builder = new StringBuilder();
            using (TextWriter writer1 = new StringWriter(builder))
            {
                xml.Save(writer1);
 
                XmlReader xmlFile;
                xmlFile = XmlReader.Create(new StringReader(builder.ToString()), new XmlReaderSettings());
                DataSet ds2 = new DataSet();
                ds2.ReadXml(xmlFile);
 
 
 
 
 
            }
 
 
            if (Comprobation != builder.ToString())
            {
                Comprobation = builder.ToString();
 
 
                Obj2.UpdateXml(builder.ToString());
 
 
 
 
 
            }
 
            pasarTabla2 = Obj2.ds2;
            CompareDataSets();
 
 
        }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder