tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
398
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    w_digger w_digger ist offline Mitglied
    Registriert seit
    Jun 2008
    Beiträge
    19
    Hallo alle zusammen,

    ich denke ich habe hier ein Standartproblem mit ID's.

    Ich habe ein Tabelle mit einer ID, die ein autoincrement-Feld ist.
    Auf dem normalen Weg (s. unten) ziehe ich mir die Daten und sagen wir mal MAX(ID_Feld) ist gleich 20.

    cmd = new SqlCommand("SELECT ID_Feld, Text_Feld FROM Tabelle");
    cmd.Connection = this.conn;
    cmd.CommandType = CommandType.Text;
    builder = new SqlCommandBuilder(da);
    da.SelectCommand = cmd;
    da.FillSchema(DS, SchemaType.Source, "tabelle");
    da.Fill(ds, "tabelle");

    Jetzt schreibe ich eine neue Row in die Tabelle. Diese Row bekommt somit die ID mit dem Wert 21 gefüllt.

    DataRow row = ds.Tables[0].NewRow();
    row[1] = "Text";
    ds.Tables[0].Rows.Add(row);
    ds.update(ds, "tabelle");

    Danach steht der Datensatz auch in der Tabelle. Hat jetzt aber in der Zwischenzeit ein andere ein Satz in die Tabelle geschrieben, so hat mein Datensatz in der Datenbank die ID = 22 und in meine ds.Tables[0] die ID = 21 womit ich ein gewaltiges Problem habe.

    Meinetwegen kann ich kann ich mir auch die akt. ID nochmal abfragen, aber ich kann sie nicht in meine Tabelle schreiben, da das ID-Feld durch FillSchema schreibgeschützt ist.

    Nehme ich FillSchema raus, so kann ich das Feld updaten, doch ändert sich somit der RowStatus und beim nächsten ds.update(ds, "tabelle") wird der Datensatz wieder mit verarbeitet.

    Irgendwie stehe ich da vor einem Dilemma, was kann ich da machen. Ich denke mal, dass viele dieses Problem haben, aber ich habe noch nichts gefunden, was mir da weiter hilft.

    Vielen Dank im Voraus
    w_digger
     

  2. #2
    Avatar von FwDonnerbalken
    FwDonnerbalken FwDonnerbalken ist offline Mitglied Brokat
    Registriert seit
    May 2005
    Beiträge
    323
    Du könntest mit select @@identity bzw. mit der Funktion Scope_identity() den letzten autoincrement Wert abfragen. Wobei ich eben sah, dass von @@identity wohl abzuraten ist.

    Hilfreich könnte dieser Artikel sein: http://www.dotnetjunkies.com/Article...D953C11BE.dcik
     
    Gruß,
    Sebastian

    Mein XING Profil

    Hilfreiche Antworten bitte bewerten!

Ähnliche Themen

  1. mit DOM erstellte Tabelle sortieren
    Von chmee im Forum Javascript & Ajax
    Antworten: 10
    Letzter Beitrag: 02.04.08, 23:38
  2. Aus Anwendung erstellte Tabelle, Reporten!
    Von DaSuckOOr im Forum .NET Datenverwaltung
    Antworten: 4
    Letzter Beitrag: 14.05.07, 07:53
  3. insert into ein tabelle
    Von sim26 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 11.01.07, 11:51
  4. Aktualliesieren einer Tabelle Zurlaufzeit
    Von mmadiesh im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 16
    Letzter Beitrag: 20.09.05, 15:31
  5. Antworten: 0
    Letzter Beitrag: 20.06.05, 15:37