Imports System.IO Imports System.Data Imports System.Data.SqlTypes Imports System.Data.SqlClient Public Class frmApplAbgleich Dim Sourcedataset As New DataSet Dim Sourcedataadapter As SqlDataAdapter Dim Sourcesqlconnection As New SqlConnection Dim SourceCommandBuilder As SqlCommandBuilder Dim Destdataset As New DataSet Dim DestConnString As String Dim DestTablename As String Dim Destdataadapter As SqlDataAdapter Dim Destsqlconnection As New SqlConnection Dim DestCommandBuilder As SqlCommandBuilder Sub New(ByVal Destination_Connectionstring As String, ByVal Destination_Tablename As String) Me.InitializeComponent() DestConnString = Destination_Connectionstring DestTablename = Destination_Tablename End Sub Private Sub frmApplAbgleich_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try Destdataadapter = New SqlDataAdapter("Select * from " & DestTablename, Me.Destsqlconnection) Me.Destsqlconnection.ConnectionString = Me.DestConnString DestCommandBuilder = New SqlCommandBuilder(Destdataadapter) Destdataadapter.Fill(Destdataset, "DestTable") Me.C1Dest.DataSource = Destdataset.Tables(0) Me.C1Dest.DataMember = Destdataset.Tables(0).TableName Catch ex As Exception MsgBox(ex.Message) End Try Try Sourcedataadapter = New SqlDataAdapter("Select * from View_ITSM_TXP_Appl", Me.Sourcesqlconnection) Me.Sourcesqlconnection.ConnectionString = Globals.sConnectionString SourceCommandBuilder = New SqlCommandBuilder(Sourcedataadapter) Sourcedataadapter.Fill(Sourcedataset, "SourceTable") Me.C1Source.DataSource = Sourcedataset.Tables(0) Me.C1Source.DataMember = Sourcedataset.Tables(0).TableName Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click Dim i As Integer Dim AnzNeu As Integer = 0 Dim AnzGelöscht As Integer = 0 Dim AnzMutiert As Integer = 0 Dim mutiert As Boolean = False ' Destdataset.Tables(0).Clear() ' Destdataset.Tables.Add(Sourcedataset.Tables(0).Copy) Dim recfound As Boolean = False For Each ddr As DataRow In Destdataset.Tables(0).Rows recfound = False For Each sdr As DataRow In Sourcedataset.Tables(0).Rows If ddr.Item("applikationnr") = sdr.Item("Applikationnr") Then recfound = True Next If Not recfound Then ddr.Delete() AnzGelöscht = AnzGelöscht + 1 End If Next If Destdataset.HasChanges Then Destdataadapter.Update(Destdataset.GetChanges, "DestTable") End If Destdataset.AcceptChanges() For Each sdr As DataRow In Sourcedataset.Tables(0).Rows recfound = False mutiert = False For Each ddr As DataRow In Destdataset.Tables(0).Rows If ddr.Item("Applikationnr") = sdr.Item("Applikationnr") Then For i = 0 To Sourcedataset.Tables(0).Columns.Count - 1 If ddr.Item(Sourcedataset.Tables(0).Columns(i).ColumnName).ToString <> sdr.Item(Sourcedataset.Tables(0).Columns(i).ColumnName).ToString Then ddr.Item(Sourcedataset.Tables(0).Columns(i).ColumnName) = sdr.Item(Sourcedataset.Tables(0).Columns(i).ColumnName) mutiert = True End If Next If mutiert Then AnzMutiert = AnzMutiert + 1 recfound = True End If Next If Not recfound Then Dim xx As DataRow = Destdataset.Tables(0).NewRow For i = 0 To Sourcedataset.Tables(0).Columns.Count - 1 xx.Item(Sourcedataset.Tables(0).Columns(i).ColumnName) = sdr.Item(Sourcedataset.Tables(0).Columns(i).ColumnName) Next Destdataset.Tables(0).Rows.Add(xx) AnzNeu = AnzNeu + 1 End If Next If Destdataset.HasChanges Then Destdataadapter.Update(Destdataset.GetChanges, "DestTable") End If Destdataset.AcceptChanges() MsgBox("Abgleich erfolgreich durchgeführt:" + vbCrLf + "- Neu: " + AnzNeu.ToString.Trim + vbCrLf + "- Mutiert: " + AnzMutiert.ToString.Trim + vbCrLf + "- Gelöscht: " + AnzGelöscht.ToString.Trim) End Sub Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click Me.Close() End Sub Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click Me.Close() End Sub End Class