vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

ADO.NET / Datenbanken
Parallelitätsverletzung 
Autor: Nobbi81
Datum: 29.06.07 09:42

Hallo Leute. Ich habe mir schon viele Hinweise zu diese Problem angeschaut Beispiel: http://www.vbarchiv.net/forum/id24_i8904t8904.html
aber ich weiche mit meinem Problem ein wenig ab.

Also das Problem liegt beim Löschen von neu hinzugefügten Datensätzen. "Parallelitätsverletzung: Der Delete Command hat sich auf 0 Datensätze ausgewirkt" "Alte Daten (meine damit, das nach dem Programmstart noch keine Änderungen im DataSet getätigt wurden) können gelöscht werden. Wie bringe ich also das DataSet auf den gleichen STand? Ich denke das ich es schon mit diesem Code mache mittels ständigem Update-Befehl. Mein Code ist der:
'HINZUFÜGEN
Private Sub cmdAddNewStat_Click(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles cmdAddNewStat.Click
        Dim SQL As String = "SELECT * FROM tblStat"
        Dim DR As DataRow
        Dim CB As OleDbCommandBuilder
 
        'Wird benötigt, um das Darstellen von Zellinhalten bis zum Vollenden 
        ' der Speicherung zu sperren.
        'Sonst gibt es Konvertierungsfehler
        Zeile_hinzufügen_aktiv = True
 
        DA_Stat = New OleDbDataAdapter(SQL, adoConn)
 
        'CommandBuilder verwaltet automatisch den SQL-Befehl und deren Umsetzung
        'Beispiel: Ist der Builder nicht vorhanden so werden die Eingaben jeder 
        ' Zelle im DataGrid nicht übernommen 
        CB = New OleDbCommandBuilder(DA_Stat)
 
        '--- Zugriff auf Tabelle
        DT_Stat = DS_all.Tables("Station")
 
        'Anzahl der Zeilen ermitteln
        If cm_Stat.Count < 100 Then
            'Freigabe für das Schreiben im DataGrid
            grdStat.ReadOnly = False
            ' --- ANFÜGEN EINES DATENSATZES
            DR = DT_Stat.NewRow()
            ' Füllen der Zeile
            DR("identname") = "PWxx"
            DR("name") = "stationsname"
            DR("rufnr") = "xxx"
            DR("datei") = "xxx"
            DR("identnr") = "20050000"
            DR("port") = "0000"
            DR("run") = True
            Try
 
                'Füge die Zeile hinzu
                DT_Stat.Rows.Add(DR)
                'Springe zur eingefügten Zeile und markiere sie
                'grdStat.CurrentRowIndex = cm_Stat.Count - 1
                cm_Stat.Position = cm_Stat.Count - 1
                grdStat.Select(cm_Stat.Count - 1)
                'Beendet die aktuelle Bearbeitungsoperation
                cm_Stat.EndCurrentEdit()
                '!Update der Datenbank erfolgt in der Ereignis-Methode!
                'Das Hinzufügen auch in der realen Datenbank vollziehen
                DA_Stat.Update(DS_all, "Station")
                index_Ereignis = 1
            Catch ex As Exception
                MsgBox("Es konnte kein neuer Datensatz hinzugefügt werden!" & _
                  Environment.NewLine & _
                ex.Message, MsgBoxStyle.Critical)
            End Try
        Else
            MsgBox("max. Stationsanzahl erreicht" & Environment.NewLine, _
              MsgBoxStyle.Exclamation)
        End If
    End Sub
 
'LÖSCHEN
 
Private Function Zeile_löschen(ByVal DT As DataTable, ByVal DS_Name As String)
        Dim SQL As String = "Select * FROM tblStat"
        Dim CB As OleDbCommandBuilder
        Dim DA As OleDbDataAdapter
        Dim cm As CurrencyManager
 
        cm = CType(Me.BindingContext(DS_all, DS_Name), CurrencyManager)
        DA = New OleDbDataAdapter(sSQL, adoConn)
        CB = New OleDbCommandBuilder(DA)
 
        'Me.DG_sortieren(grdAnrufer, 3)
        If cm.Count > 0 Then
            Dim msg As String = "Wollen Sie den Datensatz wirklich löschen?"
            Dim cpt As String = "FeCon Zentrale"
            If MessageBox.Show(msg, cpt, MessageBoxButtons.YesNo, _
              MessageBoxIcon.Question) = DialogResult.Yes Then
                'Lösche die Zeile im DataGrid
                cm.RemoveAt(cm.Position)
                'Beendet die aktuelle Bearbeitungsoperation
                cm.EndCurrentEdit()
              Bearbeitungsoperation
                DT = DS_all.Tables(DS_Name)
                If DT.DataSet.HasChanges() Then
                    Try
                        DA.Update(DS_all, DS_Name)
                    Catch ex As Exception
                        MsgBox("Datensatz konnte nicht gelöscht werden!" & _
                          Environment.NewLine & _
                        ex.Message, MsgBoxStyle.Critical)
                    End Try
                End If
            End If
        End If
    End Function
Danke für sReinschauen!!
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Parallelitätsverletzung2.790Nobbi8129.06.07 09:42
Re: Parallelitätsverletzung1.548Nobbi8129.06.07 11:08
Re: Parallelitätsverletzung1.588ModeratorDaveS29.06.07 14:10
Re: Parallelitätsverletzung1.559Nobbi8129.06.07 14:10
Re: Parallelitätsverletzung1.453Nobbi8129.06.07 14:14

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-2025 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