
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.
también he intentado usar dos xml (uno de cada base de datos) y compararlos, sin obtener ningún resultado que me sirva
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


0