vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2017
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Aktualisieren aller Daten im DataTable eines DataSets 
Autor: spatzimatzi
Datum: 18.06.17 16:47

Hallo,
habe ein Problem und brauche eure Hilfe.

Derzeitige Situation:
Beim Start des Programmes wird eine Form mit einem DataGridView aufgerufen. Geladen werden die Daten mit Fill des DataAdapters und einer StoredProcedure
cmd.CommandText = "usp_SelectNotizenDC"
intAnz_Notizen = da.Fill(dsDatenPool, "Notizen")
Möchte der Anwender die Daten ändern, dann wird über die Auswahl einer Zeile im DataGridview eine neue Form aufgerufen und die Daten mit Hilfe des vorliegenden Schlüssels von der Datenbank gelesen
Auch dies geschieht mit eigenständigen Adaptern und StoredProcedure
Veränderungen an den Daten werden beim Verlassen der 2. Form direkt in der Datenbank hinterlegt und in der DataTable "Notizen" durchgeführt. Den Erfolg der Änderung sieht der Anwender direkt in seinem DataGridView der 1. Form.

Damit der 2. Anwender die Änderung erkennt, muss eine Aktualisierung seiner Daten stattfinden.
Dabei wird die Fill-Methode, die im Load-Ereigniss das DataGridView gefüllt hat, nochmals ausgeführt.
Die Anpassung wird vollzogen. Man kann in der Aktualisierung auch nur die Records lesen, die ab einem bestimmten Zeitpunkt Veränderungen erfahren haben. Es funktioniert auch zeitgesteuert. Z.B. alle 2 Minuten. Das läuft einwandfrei.
Sollte es ein besseres Verfahren geben, dann würde ich mich über Informationen freuen.

Nun zu meinem Problem:
Das Problem tritt beim Einfügen eines neuen Datensatzes auf.
Wird beim Einfügen die 2. Form verlassen, dann wird der neue Datensatz in die Datenbank geschrieben und die Schlüsselnummer wird zurückgegeben.
Danach wird auch die DataTable "Notizen" mit einem neuen Datensatz gefüllt. Dafür wird die Schlüsselnummer verwendet. Auch das geschieht noch einwandfrei.

Der Fehler tritt bei der Aktualisierung (wenn alle Änderungen eingespielt werden) auf.
Der Fehler lautet:
System.Data.ConstraintException: Einschränkungen konnten nicht aktiviert werden.
Mindestens eine Zeile enthält Werte die die Werte für die Einschränkungen non-null, unique or foreign-key verletzen.

Der eingefügte Datensatz erscheint im DataGridview 2 mal. Bei beiden Records wird ein roter Kreis mit einem Ausrufezeichen beim Schlüsselfeld eingeblendet. Deshalb vermute ich, dass der Fehler im Schlüsselfeld liegt.
Der Tooltipp des roten Kreises hat folgenden Inhalt:
Die Spalte 'NotizenIdent' hat die Einschränkung, dass sie eindeutig sein muss. Der Wert ... ist bereits vorhanden

Ich verstehe, dass der Schlüssel nur einmal vorhanden sein darf.
Da die veränderten Records aus der Datenbank direkt aktualisiert werden, hatte ich gedacht, dass geht auch mit den neuen Records.
Habe auch experimentiert mit
- da.FillSchema(dsDatenPool, SchemaType.Source, "Notizen")und
- da.MissingSchemaAction = MissingSchemaAction.AddWithKey
damit die Informationen des Schlüsselfeldes der Tabelle im DataSet bekannt sind.
Aber keine Änderung.

Jetzt die berühmte Frage: Was mache ich falsch? Habe ich ein Verständnisproblem?

Ich freue mich schon jetzt über zahlreiche Informationen und Hinweise

Danke
spatzimatzi
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise bis zu 120,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 479,20 EUR statt 599,- EUR
  • sevDTA 3.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 20,00 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 55,20 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig
     ThemaViews  AutorDatum
    Aktualisieren aller Daten im DataTable eines DataSets212spatzimatzi18.06.17 16:47
    Re: Aktualisieren aller Daten im DataTable eines DataSets104Manfred X18.06.17 18:21
    Re: Aktualisieren aller Daten im DataTable eines DataSets106effeff18.06.17 18:27
    Re: Aktualisieren aller Daten im DataTable eines DataSets92spatzimatzi18.06.17 19:29
    Re: Aktualisieren aller Daten im DataTable eines DataSets92Manfred X19.06.17 11:28
    Re: Aktualisieren aller Daten im DataTable eines DataSets88effeff19.06.17 12:41
    Re: Aktualisieren aller Daten im DataTable eines DataSets87spatzimatzi19.06.17 12:22
    Re: Aktualisieren aller Daten im DataTable eines DataSets81Manfred X19.06.17 15:48
    Re: Aktualisieren aller Daten im DataTable eines DataSets85spatzimatzi19.06.17 13:03
    Re: Aktualisieren aller Daten im DataTable eines DataSets80Manfred X19.06.17 16:08
    Re: Aktualisieren aller Daten im DataTable eines DataSets78spatzimatzi19.06.17 14:05
    Re: Aktualisieren aller Daten im DataTable eines DataSets79Manfred X19.06.17 15:59
    Re: Aktualisieren aller Daten im DataTable eines DataSets80spatzimatzi19.06.17 16:15
    Re: Aktualisieren aller Daten im DataTable eines DataSets78spatzimatzi19.06.17 16:34
    Re: Aktualisieren aller Daten im DataTable eines DataSets84Manfred X19.06.17 17:10
    Re: Aktualisieren aller Daten im DataTable eines DataSets86spatzimatzi19.06.17 17:32

    Sie sind nicht angemeldet!
    Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

    Einloggen  |  Neu registrieren

    Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

    nach obenzurück
     
       

    Copyright ©2000-2017 vb@rchiv Dieter Otter
    Alle Rechte vorbehalten.
    Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

    Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel