vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
Multiuser-XML 
Autor: Manfred X
Datum: 17.10.13 09:47

Ein Verhindern des Überschreibens der Änderungen anderer
Nutzer könnte man durch einen Datenabgleich beim Speichern
realisieren.

Grob getestet !!!!
Public Class frmXML_Multiuser
 
    Dim xmldaten As String = "C:\daten\demo_multi.xml"
 
    Dim WithEvents btnload As New Button With _
        {.Parent = Me, .Text = "Laden"}
    Dim WithEvents btnSave As New Button With _
        {.Parent = Me, .Text = "Speichern", .Left = 100}
 
    Dim dgv As New DataGridView With _
                      {.Parent = Me, .Top = 50, .Width = 600, _
                       .AllowUserToDeleteRows = False}
 
    Dim dt As New DataTable
 
 
    Private Sub CreateData()
        With dt
            .TableName = "testdaten"
            .Columns.Add("Firma")
            .Columns.Add("Kundennummer")
            .Columns.Add("Optionen")
 
            .Rows.Add("MotorenMaxe", "123-4567", "Express")
            .Rows.Add("GetriebeGünther", "123-5678", "Normal")
            .Rows.Add("SchmierölEddi", "456-789", "Reduziert")
 
            .PrimaryKey = {.Columns("Kundennummer")}
        End With
 
        dt.WriteXml(xmldaten, XmlWriteMode.WriteSchema)
    End Sub
 
 
    Private Sub btnload_Click(sender As Object, _
            e As System.EventArgs) Handles btnload.Click
 
        Try
            dt.Clear()
            dt.ReadXml(xmldaten)
            dt.AcceptChanges()
            dgv.DataSource = dt
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
 
 
    Private Sub btnSave_Click(sender As Object, _
                e As System.EventArgs) Handles btnSave.Click
 
        Try
            If Not writexmltofile() Then
                If MsgBox("Änderungen konnten nicht gespeichert werden." & _
                  vbCrLf & _
                       "Trotzdem speichern?", _
                   MsgBoxStyle.Exclamation Or MsgBoxStyle.OkCancel) = _
                   MsgBoxResult.Cancel Then Exit Sub
 
                dt.WriteXml(xmldaten, 0) 'Kollegen-Änderungen überschreiben
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
    End Sub
 
 
    Public Function writexmltofile() As Boolean
 
        'aktuelle Daten neu lesen und sperren
        Dim fs As IO.FileStream = IO.File.Open(xmldaten, _
            IO.FileMode.Open, IO.FileAccess.ReadWrite, IO.FileShare.Read)
 
        Dim dt_current As New DataTable
        dt_current.ReadXml(fs)
 
        'aktuelle Daten abgleichen
        With dt_current
            If .Columns.Count <> dt.Columns.Count Then Return False
            For c As Integer = 0 To .Columns.Count - 1
                If Not dt.Columns.IndexOf(.Columns(c).ColumnName) = c Then
                    fs.Close() 'Spaltenschema inzwischen geändert
                    Return False
                End If
            Next c
 
            Dim pcn As String = dt.PrimaryKey(0).ColumnName
 
            For r As Integer = 0 To .Rows.Count - 1
                Dim row_user As DataRow = _
                    dt.Rows.Find(.Rows(r)(pcn))
 
                If row_user IsNot Nothing Then
                    For c As Integer = 0 To .Columns.Count - 1
                        Dim cc As Integer = _
                           dt.Columns.IndexOf(.Columns(c).ColumnName)
                        If Not .Rows(r)(c).Equals _
                            (row_user(cc, DataRowVersion.Original)) Then
                            fs.Close() 'Zeileninhalt inzwischen extern geändert
                            Return False
                        End If
 
                        If Not row_user.RowState = DataRowState.Unchanged Then
                            'geänderten Wert in frisch geladene Table übertragen
                            .Rows(r)(c) = row_user(cc, DataRowVersion.Current)
                        End If
                    Next c
                Else
                    fs.Close() : Return False 'Schlüssel geändert oder 
                    'inzwischen neue Zeile erstellt
                End If
            Next r
 
            For r As Integer = 0 To dt.Rows.Count - 1
                If dt.Rows(r).RowState = DataRowState.Added Then
                    .Rows.Add(dt.Rows(r).ItemArray) 'neu erstellte Zeile anfügen
                End If
            Next r
 
            fs.Close()
            .WriteXml(xmldaten, XmlWriteMode.WriteSchema)
            dt.AcceptChanges()
        End With
 
        Return True
 
    End Function
 
    Private Sub frmXML_Multiuser_Load(sender As Object, _
                        e As System.EventArgs) Handles Me.Load
        If Not IO.File.Exists(xmldaten) Then CreateData()
    End Sub
End Class


Beitrag wurde zuletzt am 17.10.13 um 10:07:14 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
DataGridView und XML4.405stefanbla8016.10.13 06:53
Re: DataGridView und XML3.323Manfred X16.10.13 09:36
Re: DataGridView und XML3.308stefanbla8016.10.13 09:55
Re: DataGridView und XML3.314Manfred X16.10.13 10:19
Re: DataGridView und XML3.229ErfinderDesRades18.10.13 16:51
Re: DataGridView und XML3.307ModeratorDaveS18.10.13 17:38
Re: DataGridView und XML3.267ErfinderDesRades18.10.13 17:56
Re: DataGridView und XML3.317ModeratorDaveS18.10.13 19:11
Re: DataGridView und XML3.359ErfinderDesRades18.10.13 19:30
Re: DataGridView und XML3.395ModeratorDaveS18.10.13 19:59
Re: DataGridView und XML3.225ErfinderDesRades18.10.13 20:51
Re: DataGridView und XML3.384Manfred X18.10.13 20:59
Re: DataGridView und XML3.227stefanbla8016.10.13 10:26
Re: DataGridView und XML3.299Manfred X16.10.13 10:37
Re: DataGridView und XML3.365ModeratorDaveS16.10.13 12:10
Re: DataGridView und XML3.249stefanbla8016.10.13 10:39
Re: DataGridView und XML3.551Manfred X16.10.13 10:43
Re: DataGridView und XML3.360stefanbla8016.10.13 11:32
Re: DataGridView und XML3.314stefanbla8016.10.13 12:08
Re: DataGridView und XML3.285Manfred X16.10.13 12:38
Re: DataGridView und XML3.252stefanbla8016.10.13 13:00
Re: DataGridView und XML3.323Manfred X16.10.13 13:07
Re: DataGridView und XML3.263stefanbla8016.10.13 13:12
Re: DataGridView und XML3.388ModeratorDaveS16.10.13 13:18
Re: DataGridView und XML3.333Manfred X16.10.13 13:19
Re: DataGridView und XML3.368stefanbla8016.10.13 13:26
Re: DataGridView und XML3.528Manfred X16.10.13 13:36
Re: DataGridView und XML3.407stefanbla8016.10.13 13:45
Re: DataGridView und XML3.433Manfred X16.10.13 13:59
Re: DataGridView und XML3.207stefanbla8016.10.13 15:18
Re: DataGridView und XML3.317Manfred X16.10.13 15:38
Re: DataGridView und XML3.463stefanbla8017.10.13 06:50
Re: DataGridView und XML3.310Franki17.10.13 07:27
Multiuser-XML3.309Manfred X17.10.13 09:47
Re: Multiuser-XML3.397ModeratorDaveS17.10.13 10:07
Re: DataGridView und XML3.223ModeratorDaveS17.10.13 10:06
Re: DataGridView und XML3.269stefanbla8017.10.13 10:16
Re: DataGridView und XML3.324Manfred X17.10.13 10:19
Re: DataGridView und XML3.264stefanbla8017.10.13 10:26
Re: DataGridView und XML3.304ModeratorFZelle17.10.13 10:34
Re: DataGridView und XML3.276Manfred X17.10.13 10:44
Re: DataGridView und XML3.263ModeratorFZelle17.10.13 15:56
Re: DataGridView und XML3.249Manfred X17.10.13 16:48
Re: DataGridView und XML3.225ModeratorDaveS17.10.13 10:59
Re: DataGridView und XML3.258ModeratorFZelle17.10.13 15:57
Re: DataGridView und XML3.259ModeratorDaveS17.10.13 18:30
Re: DataGridView und XML3.503Manfred X17.10.13 10:35
Re: DataGridView und XML3.255stefanbla8017.10.13 10:51
Re: DataGridView und XML3.224ModeratorDaveS17.10.13 10:58
Re: DataGridView und XML3.346Manfred X17.10.13 11:07
Re: DataGridView und XML3.179ModeratorDaveS17.10.13 11:11
Re: DataGridView und XML3.338Manfred X17.10.13 11:16
Re: DataGridView und XML3.216stefanbla8017.10.13 11:09
Re: DataGridView und XML3.261stefanbla8017.10.13 11:53
Re: DataGridView und XML3.484Manfred X17.10.13 12:32
Re: DataGridView und XML3.282stefanbla8017.10.13 13:13
Re: DataGridView und XML3.228Manfred X17.10.13 13:41
Re: DataGridView und XML3.272stefanbla8017.10.13 13:50
Re: DataGridView und XML3.254Manfred X17.10.13 14:02
Re: DataGridView und XML3.366stefanbla8017.10.13 14:24
Re: DataGridView und XML3.399Manfred X17.10.13 14:37
Re: DataGridView und XML3.332stefanbla8017.10.13 14:52
Re: DataGridView und XML3.355Manfred X17.10.13 15:35

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