2 DataTables mit einander vergleichen?

Gotenks

Mitglied
WOW danke..

So jetzt habe ich nur noch eine letzte Frage...
mein Code:
C#:
private void Form1_Load(object sender, EventArgs e)
        {
            DataTable temp = new DataTable();  // erstelle doch so wie du ein neue Datatable :) schien mir einfach, denn bei temp_DT hat er das irgendwie nicht angezeigt
            try
            {
                temp.ReadXml("datatable.xml");
            }
            catch(Exception)
            {
                goto Anfang;
            }
            Anfang:

            dataGridView1.DataSource = temp;

            DataGridViewCheckBoxColumn checkBox = new DataGridViewCheckBoxColumn();
            checkBox.HeaderText = "Speichern";
            checkBox.Name = "Speichern";
            checkBox.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
            dataGridView1.Columns.Insert(0, checkBox);
            dataGridView1.AutoGenerateColumns = true;
        }


//diesen teil habe ich dir vorher nicht gezeigt :)
private void button2_Click(object sender, EventArgs e)
        {
            string output = speicher_Ort + txt1.Text + ".csv";
            StreamWriter streamWriter = new StreamWriter(@output, false);

            for (int r = 0; r < dataGridView1.Rows.Count; r++)
            {
                if (Convert.ToBoolean((dataGridView1.Rows[r].Cells["Speichern"] as DataGridViewCheckBoxCell).Value))
                {
                    string rowValue = "";
                    for (int c = 1; c < dataGridView1.ColumnCount; c++)
                    {
                        rowValue += "\"" + dataGridView1.Rows[r].Cells[ c].Value + "\";";
                    }
                    streamWriter.WriteLine(rowValue);
                }
            }
            streamWriter.Close();
        }
// einefache speicher arbeit :)



private void button3_Click(object sender, EventArgs e)
        {
            SqlConnection a_Conn = new SqlConnection(AconStr);
            SqlConnection b_Conn = new SqlConnection(BconStr);

            SqlDataAdapter wss_dataAdapter = new SqlDataAdapter(aSelectStr, a_Conn);
            SqlDataAdapter ap_dataAdapter = new SqlDataAdapter(bpSelectStr, b_Conn);

            a_Conn.Open();
            b_Conn.Open();

            DataSet result = new DataSet();
            a_dataAdapter.FillSchema(result, SchemaType.Source, "Kunde");
            b_dataAdapter.FillSchema(result, SchemaType.Source, "Daten");
            a_dataAdapter.Fill(result, "kunde");
            b_dataAdapter.Fill(result, "Daten");

            wss_Conn.Close();
            ap_Conn.Close();

            DataTable a_table = result.Tables[0];
            DataTable b_table = result.Tables[1];
            DataTable haupt_DT = tables.result_DT(a_table, b_table);
            DataTable temp_DT = tables.temp_DT();  // wenn ich das oben bei Load eingebe und er soll die XML lesen bringt das nicht, weiß nicht warum, liegt sicherlich daran da es eine Methode aus einer eigenen Klasse ist und dort schon spalten vorschreibt.

            DataColumn[] primArray = new DataColumn[1];
            primArray[0] = haupt_DT.Columns["ID"];
            haupt_DT.PrimaryKey = primArray;

            DataRow[] diff = haupt_DT.AsEnumerable()
                            .Where(x => temp_DT.Select("ID = " + x["ID"])
                            .Length == 0).ToArray();
            
            for (int i = 0; i < diff.Length; i++)
                temp_DT.ImportRow(diff[i]);

           
            dataGridView1.DataSource = temp_DT;  // hier werden die neuen Datensätze im dataGridView angezeigt, vorher wird natürlich verglichen, wobei ich denke, dass er es immer noch nicht in temp_DT abspeichert, also die neuen Datensätze. Habe auch eine Try-Catch-Block hinzugefügt um das Array und for-schleife, im Catch-Block habe ich dann eine MessagBox wiedergeben wollen, dass es keine neuen Datensätze vorhanden sind, doch hat nícht geklappt.

            temp_DT.TableName = "temp_DT";

            temp_DT.WriteXml("datatable.xml", XmlWriteMode.WriteSchema);
        }

Alles dank DIR :) :) :)

Meine Letzte Frage:
Wenn ich nun die Datensätze anzeigen lasse, die NEU sind. Werden diese ganzen neuen Datensätze im dataGridView angezeigt und gespeichert.
Deswegen meine frage ob man neue Datensätze direkt selektieren kann(danke nochmal).

Nachdem ich diese Datensätze gespeichert habe, sollen bei dem nächsten Button-Klick nur die Datensätze angezeigt werden die noch nicht gespeichert/exportiert (in .csv) wurden sind.

Hoffe verstehst meine letzte frage :)

Danke aber bis hierhin für deine Hilfe und Herzlichen Dank für die Code - Snippets...
DANKE ^^ ^^ ^^ ^^

LG