none
Probleme mit DataRow, editierte Werte werden nicht in Tabellen übernommen RRS feed

  • Frage

  • Hallo, versuche schon seit gestern verzweifelt aus verschiedenen Tabellen Datensätze zu editieren und dann zu übernehmen. Ich schildere mal kurz die Aufgabe.

    Ich habe eine DataRowView (Master-Einstelung für die zu editierenden DataRow's) von der ich die Spaltenwerte in andere DataRow's übernehmen möchte.

    Also, wie gesagt, ich ändere erst die DataRowView. Dann nehme ich mir die DataRow's vor, die ich editieren möchte. Ich suche in der DataTable mit Select die DataRow und duchlaufe die Spalten in einer Schleife. Dabei übergebe ich die Daten der DataRowView an die DataRow. Nach dem Durchlauf wird mit .AcceptChanges() die Änderungen der DataRow übernommen. Sind alle DataRow's editiert, wird mit Hilfe des CommandBuilders die Änderungen vom DataSet in die Datenabnk gespeichert. Im Anhang mal Code mit der PRoblematik.

    Das Problem ist, die Änderungen kommen in der Datenbank nicht durch. Ich versteh aber nicht warum. Wenn ich debugge, dann sehe ich wie die Daten in die DataRow übernommen wurden. Da muß beim aktualisieren irgendie auf falsche Werte zugeriffen werden. Als DB verwende ich SqlExpress 2005/2008

     

    if (_editMode)
                  {
                    //// Bemerkung: Hier bei 2. Tag beginnen, der erste wird als Master verwendet
                    for (int m = 1; m < _auswahlTage.Count; m++)
                    {
                      /// Zu editierende DataRow suchen (nach Datum, das gibts nur einmal in der Tabelle)
                      DataRow[] rw = _MVDataSet.Tables[i].Select("Datum = '" + _auswahlTage[m] + "'");
                      rw[0].BeginEdit();
    
                      //// Die daten der Master-DataRowView an die DataRow die zu editieren ist übergeben
                      for (int n = 1; n < drv.Row.ItemArray.Length; n++)
                      {
                        /// Diese beiden Spalten werden übergangen
                        if ("Anderungszeit" == rw[0].Table.Columns[n].ColumnName)
                          continue;
                        if ("Datum" == rw[0].Table.Columns[n].ColumnName)
                          continue;
    
                        rw[0][n] = drv[n];
                      }
                      rw[0].EndEdit();
                      /// Änderungen der DataRow übernehmen (Proposed mit Current-Werten ersetzen)
                      rw[0].AcceptChanges();
                      
                      GetVerbrauchsdaten(i, _auswahlTage[m]);
                    }
                    /// Tabelle mit Änderungen übernehmen
                    _MVDataSet.Tables[i].AcceptChanges();
                  }
    

    Hat jemand eine Idee?

     

     

     

    Sonntag, 20. März 2011 09:17

Antworten

  • Hallo, habe den Fehler gefunden.


    Tja, und jetzt habe ich gerade noch das .AcceptChanges() weggelassen, und siehe da es geht. Das .AcceptChanges() setzt mir ja die editierte Zeile wieder auf "unchanged", womit sie beim Update der Datenbank nicht erfasst werden kann.

    Sonntag, 20. März 2011 20:35