Laden...

Abfragen von 2 Tabellen und Zurückschreiben

Erstellt von Grimmbizkit vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.457 Views
G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren
Abfragen von 2 Tabellen und Zurückschreiben

verwendetes Datenbanksystem: SQL 05 Express

Hallo zusammen,

ich habe eine Frage, ich habe 2 Tabellen, in der Tabelle 1 stehen hauptsächlich nur Schlüssel drin, und in der zweiten Tabelle stehen dann Schlüssel und Texte Drin.

Die daten Frage ich so ab:


        internal DataTable LoadLfsDaten(DateTime From, DateTime To)
        {
            if (!DataHvs.OpenConn()) return null;

            DataTable dtLfsDaten = dsLfs_Daten.Tables["Lfs_Daten"];

            if (null != dtLfsDaten)
            {
                dtLfsDaten.Clear();
            }
            //
            //if (null == this.daLfs_Daten)
            //{
                String cSqlCmd = @"SELECT Lieferscheine.*, LieferscheinDaten.* FROM Lieferscheine INNER JOIN LieferscheinDaten ON Lieferscheine.LieferscheinDaten = LieferscheinDaten.id WHERE VDatum BETWEEN @Date1 AND @Date2 ORDER BY VDatum";
                daLfs_Daten = new SqlDataAdapter(cSqlCmd, DataHvs.connHvs);
                daLfs_Daten.SelectCommand.Parameters.Add("@Date1", SqlDbType.DateTime).Value = From;
                daLfs_Daten.SelectCommand.Parameters.Add("@Date2", SqlDbType.DateTime).Value = To;
                SqlCommandBuilder UpdCmd = new SqlCommandBuilder(daLfs_Daten);
                daLfs_Daten.Fill(dsLfs_Daten,"Lfs_Daten");
            
            //}
            //else
            //    daLfs_Daten.Fill(dsLfs_Daten,"Lfs_Daten");
            
            return dsLfs_Daten.Tables["Lfs_Daten"];
        }

Die Daten werden auch richtig in meine Formular angezeigt, doch wie kann ich dir geänderten Daten nun wieder zurückschreiben?

Im Formular machen ich noch folgenden :


            dtLfsDaten = lfs.LoadLfsDaten(this.dateTimePicker_From.Value, this.dateTimePicker_To.Value);
            dvLfsDaten = dtLfsDaten.DefaultView;
            bs1.DataSource = dvLfsDaten;
            bindingNavigator1.BindingSource = bs1;
            dataGridView1.DataSource = bs1;

Zu speichern verwende ich folgende Methoden:


internal bool SaveLfsDaten()
{
        dsLfs_Daten.AcceptChanges();
        daLfs_Daten.Update(dsLfs_Daten,"Lfs_Daten");
}
J
3.331 Beiträge seit 2006
vor 15 Jahren

Ohne Deinen Code analysiert zu haben, liegt der Fehler vor allem am AcceptChanges: Das ist entgegen landläufiger Vermutung nicht die Bestätigung des Nutzers dafür, dass die Änderungen gültig werden sollen; stattdessen handelt es sich um die Feststellung der DataTable, dass die Änderungen erledigt sind (also bereits in die Datenbank übertragen wurden).

Beim Aufruf von AcceptChanges werden alle Bearbeitungsvorgänge von DataRow-Objekten, die sich noch im Bearbeitungsmodus befinden, erfolgreich beendet. Der DataRowState ändert sich ebenfalls: alle hinzugefügten (Added) und geänderten (Modified) Zeilen werden zu Unchanged. Gelöschte (Deleted) Zeilen werden entfernt.

Im Allgemeinen wird die AcceptChanges-Methode für eine DataTable erst aufgerufen, nachdem Sie versucht haben, das DataSet mit der DbDataAdapter.Update-Methode zu aktualisieren.

Entferne diese Zeile, und Du kommst weiter.

Dir ist klar, dass der DbDataAdapter nur Daten für jeweils eine Tabelle verarbeiten kann? Durch JOIN erzeugte Datenmengen können nicht automatisch gespeichert werden; das geht nur mit manuell erzeugtem UpdateCommand.

Jürgen

G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren

Muss ich dann wirklich jedes Feld einzeln angeben, oder geht sowas auch einfacher?

so wollte ich das nicht machen:
Update XX SET(feld1, feld2, ... feld90) VALUES ('aoshg',123,... 'dsjg')

ich habe ja eine fertige Datarow oder DataTable, wo alles fertig drin steht.

Geht das?

Gruß Simon

J
3.331 Beiträge seit 2006
vor 15 Jahren

Probiere es doch erst einmal so aus:

void SaveLfsDaten()
{
    daLfs_Daten.Update(dsLfs_Daten,"Lfs_Daten");
}

Wenn die Daten ohne JOIN eingefügt wurden, könnte der DbDataAdapter die erforderlichen Befehle selbständig erstellen:

Wenn diese Eigenschaft nicht festgelegt wurde und im DataSet Primärschlüsselinformationen vorhanden sind, kann während der Ausführung von Update der UpdateCommand automatisch generiert werden, wenn Sie die SelectCommand-Eigenschaft festlegen... Für diese Generierungslogik müssen im DataSet Schlüsselspalteninformationen vorhanden sein. Weitere Informationen finden Sie unter Automatisches Generieren von Befehlen.

Jürgen

G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren

Problem, ich brauche den JOIN aber, weil die Daten die ich darstellen muss/soll, aus zwei Tabellen kommen bzw. zusammen setzen.

also muss ich den UpdateCommand schon "per Hand" erstellen.

3.825 Beiträge seit 2006
vor 15 Jahren

Entweder KEIN join oder SQL-Kommandos per Hand.

Einen Tod muss man sterben 😉

Kannst Du event. die Daten in ein Dataset mit 2 Tabellen laden ?

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren

Wie erstelle ich denn diesen Updatebefehl per Hand?
Muss ich wirklich jedes Feld einzeln übergeben?
(wie oben beschrieben), oder geht das auch irgendwie etwas einfacher?

habe mal sowas gesehen:


//SqlCommand updCmd = new SqlCommand("UPDATE Lieferscheine SET KartNr      = @pKartNr, " +
                //                                                            "MatchCode   = @pMCode, " +
                //                                                            "ArtNr       = @pArtNr, " +
                //                                                            "SpedNr      = @pSpedNr, " +
                //                                                            "BesitztHgr  = @pBesHgr, " +
                //                                                            "LeerGewBriefLkw = @pLGBL, " +
                //                                                            "LeerGewBriefHgr = @pLGBH, " +
                //                                                            "MaxGewLkw   = @pMGL, " +
                //                                                            "MaxGewHgr   = @pMGH, " +
                //                                                            "LeerwPflicht  = @pIsPfl, " +
                //                                                            "LeerwTaeglich = @pIsTaeg, " +
                //                                                            "SysStatus     = @pStat " +
                //                                                            "WHERE Kennz = @pKennz", cnHvs);

3.511 Beiträge seit 2005
vor 15 Jahren

oder geht das auch irgendwie etwas einfacher?

Nein. Du musst alle Felder, die sich ändern sollen auch im UPDATE Statement angeben.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren

Wenn ich denn dann 2 Update Befehle mache (weil 2 Tabellen, wie kann ich den zweiten befehl einfügen?

J
3.331 Beiträge seit 2006
vor 15 Jahren

2 Tabellen benötigen 2x DbDataAdapter mit jeweils eigenem DbCommand.

Jürgen

G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren

Also brauche ich im grunde sogar 3 oder nicht?
1x Abfrage aus beiden Tabellen mit Join
2x UpdateCommand auf die einzelnen Tabellen

Gruß Simon

G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren

Meine Änderungen werden nicht übernommen ???

Habe nun folgenden Quellcode:


internal DataTable LoadLfsDaten(DateTime From, DateTime To)
        {
            if (!DataHvs.OpenConn()) return null;

            dtLfsDaten = new DataTable();

            if (null != dtLfsDaten)
            {
                dtLfsDaten.Clear();
            }
            //
            //if (null == this.daLfs_Daten)
            {
                String cSqlCmd = @"SELECT Lieferscheine.*, LieferscheinDaten.* FROM Lieferscheine INNER JOIN LieferscheinDaten ON Lieferscheine.LieferscheinDaten = LieferscheinDaten.id WHERE VDatum BETWEEN @Date1 AND @Date2 ORDER BY VDatum";

                daLfs_Daten1 = new SqlDataAdapter(cSqlCmd, DataHvs.connHvs);
                daLfs_Daten1.SelectCommand.Parameters.Add("@Date1", SqlDbType.DateTime).Value = From;
                daLfs_Daten1.SelectCommand.Parameters.Add("@Date2", SqlDbType.DateTime).Value = To;

                daLfs_Daten2 = new SqlDataAdapter(cSqlCmd, DataHvs.connHvs);
                daLfs_Daten2.SelectCommand.Parameters.Add("@Date1", SqlDbType.DateTime).Value = From;
                daLfs_Daten2.SelectCommand.Parameters.Add("@Date2", SqlDbType.DateTime).Value = To;

                SqlCommand updCmd = new SqlCommand("UPDATE Lieferscheine SET SamLfsNr      = @pSamLfsNr, " +
                                                                            "AuftragsNr    = @pAuftNr, " +
                                                                            "IsSchiff      = @pIsSchiff, " +
                                                                            "SchiffsNr     = @pSchiffsNr, " +
                                                                            "Kennz         = @pKennz, " +
                                                                            "SpedNr        = @pSpedNr, " +
                                                                            "HptSpedNr     = @pHptSpedNr, " +
                                                                            "KdNr          = @pKdNr, " +
                                                                            "BsNr          = @pBsNr, " +
                                                                            "PrNr          = @pPrNr, " +
                                                                            "IsFremd       = @pIsFremd, " +
                                                                            "IsBarVerk     = @pIsBarVerk, " +
                                                                            "IsAnlieferung = @pIsAnlieferung, " +
                                                                            "IsSauber      = @pIsSauber, " +
                                                                            "SysDatum      = @pDatum " +
                                                                            "     WHERE id = @pId", DataHvs.connHvs);
                // Parameter
                updCmd.Parameters.Add("@pSamLfsNr", SqlDbType.Int, 4, "SamLfsNr");
                updCmd.Parameters.Add("@pAuftNr", SqlDbType.VarChar, 50, "AuftragsNr");
                updCmd.Parameters.Add("@pIsSchiff", SqlDbType.Bit, 0, "IsSchiff");
                updCmd.Parameters.Add("@pSchiffsNr", SqlDbType.VarChar, 7, "SchiffsNr");
                updCmd.Parameters.Add("@pKennz", SqlDbType.VarChar, 12, "Kennz");
                updCmd.Parameters.Add("@pSpedNr", SqlDbType.VarChar, 7, "SpedNr");
                updCmd.Parameters.Add("@pHptSpedNr", SqlDbType.VarChar, 7, "HptSpedNr");
                updCmd.Parameters.Add("@pKdNr", SqlDbType.VarChar, 7, "KdNr");
                updCmd.Parameters.Add("@pBsNr", SqlDbType.VarChar, 7, "BsNr");
                updCmd.Parameters.Add("@pPrNr", SqlDbType.VarChar, 7, "PrNr");
                updCmd.Parameters.Add("@pIsFremd", SqlDbType.Bit, 0, "IsFremd");
                updCmd.Parameters.Add("@pIsBarVerk", SqlDbType.Bit, 0, "IsBarVerk");
                updCmd.Parameters.Add("@pIsAnlieferung", SqlDbType.Bit, 0, "IsAnlieferung");
                updCmd.Parameters.Add("@pIsSauber", SqlDbType.Bit, 0, "IsSauber");
                updCmd.Parameters.Add("@pDatum", SqlDbType.DateTime, 8, "SysDatum");

                //this._adapter.UpdateCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@KartNr", System.Data.SqlDbType.Int, 0, System.Data.ParameterDirection.Input, 0, 0, "KartNr", System.Data.DataRowVersion.Current, false, null, "", "", ""));
                // WHERE-Parameter
                SqlParameter pw1 = updCmd.Parameters.Add("@pId", SqlDbType.UniqueIdentifier, 16, "id");
                pw1.SourceVersion = DataRowVersion.Original;
                //
                daLfs_Daten1.UpdateCommand = updCmd;

                // ============================================
                
                SqlCommand updCmd2 = new SqlCommand("UPDATE LieferscheinDaten SET KdName1        = @pKdName1, " +
                                                                                 "KdName2        = @pKdName2, " +
                                                                                 "Kontaktperson  = @pKontaktperson, " +
                                                                                 "KdLand         = @pKdLand, " +
                                                                                 "KdPlz          = @pKdPlz, " +
                                                                                 "KdOrt          = @pKdOrt, " +
                                                                                 "KdStrasse      = @pKdStrasse, " +
                                                                                 "SpedName1      = @pSpedName1, " +
                                                                                 "HptSpedName1   = @pHptSpedName1, " +
                                                                                 "KfzArtNr       = @pKfzArtNr, " +
                                                                                 "KfzArt         = @pKfzArt, " +
                                                                                 "KfzLand        = @pKfzLand, " +
                                                                                 "Bestimmung     = @pBestimmung, " +
                                                                                 "BsLand         = @pBsLand, " +
                                                                                 "PrName         = @pPrName, " +
                                                                                 "PrKuerzel      = @pPrKuerzel, " +
                                                                                 "Proz01         = @pProz01, " +
                                                                                 "Proz02         = @pProz02, " +
                                                                                 "Proz03         = @pProz03, " +
                                                                                 "Proz04         = @pProz04, " +
                                                                                 "Proz05         = @pProz05, " +
                                                                                 "Proz06         = @pProz06, " +
                                                                                 "Proz07         = @pProz07, " +
                                                                                 "Proz08         = @pProz08, " +
                                                                                 "Proz09         = @pProz09, " +
                                                                                 "Proz10         = @pProz10, " +
                                                                                 "ZertGuetz      = @pZertGuetz, " +
                                                                                 "ZertBenor      = @pZertBenor, " +
                                                                                 "ZertBsb        = @pZertBsb, " +
                                                                                 "ZertKomo       = @pZertKomo, " +
                                                                                 "ZertCe         = @pZertCe, " +
                                                                                 "ZertAlkali     = @pZertAlkali, " +
                                                                                 "PrBeson1       = @pPrBeson1, " +
                                                                                 "PrBeson2       = @pPrBeson2, " +
                                                                                 "PrBeson3       = @pPrBeson3, " +
                                                                                 "PrBeson4       = @pPrBeson4, " +
                                                                                 "PrBeson5       = @pPrBeson5, " +
                                                                                 "AlkaliKlasse   = @pAlkaliKlasse, " +
                                                                                 "Schiffsname    = @pSchiffsname, " +
                                                                                 "Schiffer       = @pSchiffer, " +
                                                                                 "LfsBeson1      = @pLfsBeson1, " +
                                                                                 "LfsBeson2      = @pLfsBeson2, " +
                                                                                 "Warenwert      = @pWarenwert, " +
                                                                                 "MwStSatz       = @pMwStSatz, " +
                                                                                 "MwStBetrag     = @pMwStBetrag, " +
                                                                                 "Gesamtbetrag   = @pGesamtbetrag, " +
                                                                                 "SysDatum       = '" + DateTime.Now.ToString() + "'" +
                                                                                 "     WHERE id  = @pId", DataHvs.connHvs);
                // Parameter
                updCmd2.Parameters.Add("@pKdName1", SqlDbType.VarChar, 35, "KdName1");
                updCmd2.Parameters.Add("@pKdName2", SqlDbType.VarChar, 35, "KdName2");
                updCmd2.Parameters.Add("@pKontaktperson", SqlDbType.VarChar, 35, "Kontaktperson");
                updCmd2.Parameters.Add("@pKdLand", SqlDbType.Char, 3, "KdLand");
                updCmd2.Parameters.Add("@pKdPlz", SqlDbType.VarChar, 7, "KdPlz");
                updCmd2.Parameters.Add("@pKdOrt", SqlDbType.VarChar, 35, "KdOrt");
                updCmd2.Parameters.Add("@pKdStrasse", SqlDbType.VarChar, 35, "KdStrasse");
                updCmd2.Parameters.Add("@pSpedName1", SqlDbType.VarChar, 35, "SpedName1");
                updCmd2.Parameters.Add("@pHptSpedName1", SqlDbType.VarChar, 35, "HptSpedName1");
                updCmd2.Parameters.Add("@pKfzArtNr", SqlDbType.TinyInt, 0, "KfzArtNr");
                updCmd2.Parameters.Add("@pKfzArt", SqlDbType.VarChar, 15, "KfzArt");
                updCmd2.Parameters.Add("@pKfzLand", SqlDbType.Char, 3, "KfzLand");
                updCmd2.Parameters.Add("@pBestimmung", SqlDbType.VarChar, 35, "Bestimmung");
                updCmd2.Parameters.Add("@pBsLand", SqlDbType.VarChar, 3, "BsLand");
                updCmd2.Parameters.Add("@pPrName", SqlDbType.VarChar , 35, "PrName");
                updCmd2.Parameters.Add("@pPrKuerzel", SqlDbType.VarChar, 15, "PrKuerzel");
                updCmd2.Parameters.Add("@pProz01", SqlDbType.Float, 8, "Proz01");
                updCmd2.Parameters.Add("@pProz02", SqlDbType.Float, 8, "Proz02");
                updCmd2.Parameters.Add("@pProz03", SqlDbType.Float, 8, "Proz03");
                updCmd2.Parameters.Add("@pProz04", SqlDbType.Float, 8, "Proz04");
                updCmd2.Parameters.Add("@pProz05", SqlDbType.Float, 8, "Proz05");
                updCmd2.Parameters.Add("@pProz06", SqlDbType.Float, 8, "Proz06");
                updCmd2.Parameters.Add("@pProz07", SqlDbType.Float, 8, "Proz07");
                updCmd2.Parameters.Add("@pProz08", SqlDbType.Float, 8, "Proz08");
                updCmd2.Parameters.Add("@pProz09", SqlDbType.Float, 8, "Proz09");
                updCmd2.Parameters.Add("@pProz10", SqlDbType.Float, 8, "Proz10");
                updCmd2.Parameters.Add("@pZertGuetz", SqlDbType.Bit, 0, "ZertGuetz");
                updCmd2.Parameters.Add("@pZertBenor", SqlDbType.Bit, 0, "ZertBenor");
                updCmd2.Parameters.Add("@pZertBsb", SqlDbType.Bit, 0, "ZertBsb");
                updCmd2.Parameters.Add("@pZertKomo", SqlDbType.Bit, 0, "ZertKomo");
                updCmd2.Parameters.Add("@pZertCe", SqlDbType.Bit, 0, "ZertCe");
                updCmd2.Parameters.Add("@pZertAlkali", SqlDbType.Bit, 0, "ZertAlkali");
                updCmd2.Parameters.Add("@pPrBeson1", SqlDbType.VarChar, 35, "PrBeson1");
                updCmd2.Parameters.Add("@pPrBeson2", SqlDbType.VarChar, 35, "PrBeson2");
                updCmd2.Parameters.Add("@pPrBeson3", SqlDbType.VarChar, 35, "PrBeson3");
                updCmd2.Parameters.Add("@pPrBeson4", SqlDbType.VarChar, 35, "PrBeson4");
                updCmd2.Parameters.Add("@pPrBeson5", SqlDbType.VarChar, 35, "PrBeson5");
                updCmd2.Parameters.Add("@pAlkaliKlasse", SqlDbType.VarChar, 3, "AlkaliKlasse");
                updCmd2.Parameters.Add("@pSchiffsname", SqlDbType.VarChar, 35, "Schiffsname");
                updCmd2.Parameters.Add("@pSchiffer", SqlDbType.VarChar, 35, "Schiffer");
                updCmd2.Parameters.Add("@pLfsBeson1", SqlDbType.VarChar, 35, "LfsBeson1");
                updCmd2.Parameters.Add("@pLfsBeson2", SqlDbType.VarChar, 35, "LfsBeson2");
                updCmd2.Parameters.Add("@pWarenwert", SqlDbType.Decimal, 5, "Warenwert");
                updCmd2.Parameters.Add("@pMwStSatz", SqlDbType.Decimal, 5, "MwStSatz");
                updCmd2.Parameters.Add("@pMwStBetrag", SqlDbType.Decimal, 5, "MwStBetrag");
                updCmd2.Parameters.Add("@pGesamtbetrag", SqlDbType.Decimal, 5, "Gesamtbetrag");
                
                //this._adapter.UpdateCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@KartNr", System.Data.SqlDbType.Int, 0, System.Data.ParameterDirection.Input, 0, 0, "KartNr", System.Data.DataRowVersion.Current, false, null, "", "", ""));
                // WHERE-Parameter
                SqlParameter pw2 = updCmd2.Parameters.Add("@pId", SqlDbType.UniqueIdentifier, 16, "id");
                pw2.SourceVersion = DataRowVersion.Original;

                daLfs_Daten2.UpdateCommand = updCmd2;
                
                daLfs_Daten2.Fill(dsLfs_Daten, "Lfs_Daten2");
                daLfs_Daten1.Fill(dsLfs_Daten, "Lfs_Daten1");

                //}
                //else
                //    daLfs_Daten.Fill(dsLfs_Daten,"Lfs_Daten");
            }

            return dsLfs_Daten.Tables["Lfs_Daten1"];
        }

Wenn ich nun meine Daten Ändere und speichern will, dann mache ich das so:


internal bool SaveLfsDaten(DataTable dt)
        {
            try
            {
                daLfs_Daten2.Update(dt);
                daLfs_Daten1.Update(dt);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
                return false;
            }
            return true;
        }

Wenn ich erst daLfs_Daten2 ausführe, werden nur diese änderungen übernommen,

Wenn ich erst daLfs_Daten1 ausführe, werden nur diese änderungen übernommen,

Wieso kann das?

PS Die Tabelle hinter daLfs_Daten1 die ich aktualisieren will, hat Fremdschlüssel

J
3.331 Beiträge seit 2006
vor 15 Jahren

Erläuterungen in der :rtfm: unter DataAdapter.Update-Methode u.a.:

Wenn eine Anwendung die Update-Methode aufruft, untersucht der DataAdapter die RowState-Eigenschaft und führt die erforderlichen INSERT-Anweisungen, UPDATE-Anweisungen oder DELETE-Anweisungen basierend auf der im DataSet konfigurierten Reihenfolge der Indizes iterativ für jede Zeile aus.

AcceptChanges wird aufgerufen.

Damit werden beim ersten ausgeführten Update-Befehl alle Zeilen als "erledigt" markiert und stehen danach wieder auf RowState.Unchanged. Also wird beim zweiten Update-Befehl keine Zeile als "ist zu bearbeiten" erkannt.

Dein Fehler liegt aber daran, dass sich die beiden DbDataAdapter auf zwei verschiedene Tabellen beziehen sollen, wie wir oben vorgeschlagen hatten - am kürzesten von mir:

2 Tabellen benötigen 2x DbDataAdapter mit jeweils eigenem DbCommand.

Übrigens könntest Du uns das Lesen Deines Codes erleichtern, indem Du nicht alle Parameter-Befehle kopierst, sondern nur jeweils zwei bis drei als Beispiele.

Jürgen

G
Grimmbizkit Themenstarter:in
308 Beiträge seit 2006
vor 15 Jahren

Also soll ich die beiden Tabellen seperat aufrufen?

DbDataAdapter1 = SELECT * FROM Lieferscheine
DbDataAdapter2 = SELECT * FROM LieferscheinDaten

Aber wie stelle ich dann die verbindung der tabellen her, es gibt in der Lieferscheine Tabelle eine ID, die einmalig ist, und der entsprechende Datensatz ist auch in der LieferscheinDaten Tabelle.

Weil 2 DataAdapter habe ich ja, nur haben die den gleichen SELECT Command.

** -> Lösung:**
Ich rufe die beiden Update Befehle nun folgendermaßen auf:


daLfs_Daten2.AcceptChangesDuringUpdate = false;
daLfs_Daten2.Update(dtLfsDaten);                
daLfs_Daten1.Update(dtLfsDaten);

Durch AcceptChangesDuringUpdate wir die RowState nicht geändert, und beiden UpdateBefehle funktionieren.