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 Dim dtm As New DataTable Dim drm As DataRow 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 recfound As Boolean = False Dim mutiert As Boolean = False Dim appname As String dtm.Columns.Clear() dtm.Columns.Add("Type") dtm.Columns.Add("Applikation") dtm.Columns.Add("Spalte") dtm.Columns.Add("Alt") dtm.Columns.Add("Neu") ' Destdataset.Tables(0).Clear() ' Destdataset.Tables.Add(Sourcedataset.Tables(0).Copy) '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 drm = dtm.NewRow drm.Item(0) = 3 drm.Item(1) = ddr.Item(0).ToString drm.Item(2) = Sourcedataset.Tables(0).Columns(i).ColumnName drm.Item(3) = ddr.Item(Sourcedataset.Tables(0).Columns(i).ColumnName).ToString drm.Item(4) = sdr.Item(Sourcedataset.Tables(0).Columns(i).ColumnName) dtm.Rows.Add(drm) 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 End If 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 drm = dtm.NewRow drm.Item(0) = 1 drm.Item(1) = xx.Item(0).ToString drm.Item(2) = "" drm.Item(3) = "" drm.Item(4) = "" dtm.Rows.Add(drm) Destdataset.Tables(0).Rows.Add(xx) AnzNeu = AnzNeu + 1 End If Next For Each ddr As DataRow In Destdataset.Tables(0).Rows recfound = False For Each sdr As DataRow In Sourcedataset.Tables(0).Rows appname = ddr.Item(0).ToString If ddr.Item("applikationnr") = sdr.Item("Applikationnr") Then recfound = True Next If Not recfound Then ddr.Delete() drm = dtm.NewRow drm.Item(0) = 2 drm.Item(1) = appname drm.Item(2) = "" drm.Item(3) = "" drm.Item(4) = "" dtm.Rows.Add(drm) AnzGelöscht = AnzGelöscht + 1 End If Next Dim ff As New frmApplAbgleichCheckMessage ff.lblAnzahlGeloescht.Text = AnzGelöscht ff.lblAnzahlMutiert.Text = AnzMutiert ff.lblAnzahlNeu.Text = AnzNeu ff.dtm = dtm ff.ShowDialog() If ff.DialogResult = Windows.Forms.DialogResult.OK Then If Destdataset.HasChanges Then Destdataadapter.Update(Destdataset.GetChanges, "DestTable") Destdataset.AcceptChanges() End If End If If ff.DialogResult = Windows.Forms.DialogResult.Cancel Then Destdataset.RejectChanges() End If '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