Public Class frmImport_Produkte

    Private Sub btnStartImport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStartImport.Click
        If cmbMandant.SelectedIndex <> -1 Then
            Cursor = Cursors.WaitCursor
            Dim Path As String
            With OpenFileDialog1
                .Title = "Importieren der Vertrags-Produkt-Daten"
                .Filter = "Exceltabellen (*.xls)|*.xls"
                If .ShowDialog = DialogResult.OK Then
                    Path = .FileName
                End If
            End With
            If Path Is Nothing = False Then
                Dim result As MsgBoxResult
                result = MessageBox.Show("Wollen Sie die aktuellen Daten wirklich importieren! Alte Vertrags-Produktnummern werden inaktiviert!", "Bestätigung erforderlich:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                If result = MsgBoxResult.Yes Then
                    ClassLoggerSW.Init("", "Supply_Watch", False)
                    Application.DoEvents()
                    ClassLoggerSW.Add("==> Einlesen der ReferenzListe gestartet: " & Now, False)
                    ClassLoggerSW.Add("==> User: " & Environment.UserName, False)
                    ClassLoggerSW.Add("", False)
                    ' Try
                    'Zuerst löschen der "Alten" Daten
                    TBIMPORT_PRODUKTTableAdapter.cmddelete(Me.cmbMandant.SelectedValue)
                    ClassLoggerSW.Add("==> ALTE Import-Daten gelöscht", False)
                    'Me.TBPRODUKT_VERTRAGTableAdapter.Delete()
                    'Me.TBVERTRAEGETableAdapter.Delete()
                    'Einlesen der Excel-Liste
                    Dim strConnection As System.Data.OleDb.OleDbConnection = Nothing

                    'Try
                    Dim objDataSet As System.Data.DataSet
                    Dim objAdapter As System.Data.OleDb.OleDbDataAdapter
                    strConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source='" & Path & " '; " & "Extended Properties=Excel 8.0;")
                    objAdapter = New System.Data.OleDb.OleDbDataAdapter("select * from [Tabelle1$]", strConnection)
                    objDataSet = New System.Data.DataSet

                    objAdapter.Fill(objDataSet)

                    Dim DS As System.Data.DataSet
                    Dim DT As System.Data.DataTable
                    Dim DR As System.Data.DataRow
                    ' --- DataSet zuweisen
                    DS = objDataSet
                    ' --- Zugriff auf Tabelle
                    DT = DS.Tables(0)
                    Dim AnzRow As Integer = 0
                    For Each DR In DT.Rows
                        Dim Vertrag, SerienNr, BFSerienNr, Product, model, AssetNr, Status, Filter1, Filter2, Filter3, Filter4, _NICHTAKTIV, _ABGEBAUT, _ONHOLD As String
                        Dim NA As Boolean = False
                        Dim ABG As Boolean = False
                        Dim OH As Boolean = False
                        Vertrag = NullVerhindern(DR.Item(0))
                        SerienNr = NullVerhindern(DR.Item(1))
                        BFSerienNr = NullVerhindern(DR.Item(2))
                        Product = NullVerhindern(DR.Item(3))
                        model = NullVerhindern(DR.Item(5))
                        AssetNr = NullVerhindern(DR.Item(6))
                        _NICHTAKTIV = NullVerhindern(DR.Item(8))
                        _ONHOLD = NullVerhindern(DR.Item(9))
                        _ABGEBAUT = NullVerhindern(DR.Item(10))
                        Filter1 = NullVerhindern(DR.Item(11))
                        Filter2 = NullVerhindern(DR.Item(12))
                        Filter3 = NullVerhindern(DR.Item(13))
                        Filter4 = NullVerhindern(DR.Item(14))

                        If _ABGEBAUT.Length > 0 Then
                            ABG = True
                        End If
                        If _ONHOLD.Length > 0 Then
                            OH = True
                        End If
                        If _NICHTAKTIV.Length > 0 Then
                            NA = True
                        End If

                        If Vertrag <> String.Empty And SerienNr <> String.Empty And Product <> String.Empty And Filter1 <> String.Empty Then
                            'Insert der Zeile                         MARKT    VERTRAG  SERIENNR    PRODUKT_NR  MODELLNAME
                            Me.TBIMPORT_PRODUKTTableAdapter.CmdInsert(Filter1, Vertrag, SerienNr, Product, model, Environment.UserName, NA, ABG, cmbMandant.SelectedValue, AssetNr, Filter1, Filter2, Filter3, Filter4, BFSerienNr, OH)
                            AnzRow += 1
                        End If





                        'Catch ex As Exception
                        'MsgBox("Fehler-Nachricht: " & vbNewLine & ex.Message & vbNewLine & "MARKT: " & DR.Item(0) & vbNewLine & "VERTRAGSNR: " & DR.Item(1) & vbNewLine & "SERIENNR: " & DR.Item(2) & _
                        '"ProduktNr: " & DR.Item(3) & vbNewLine & "MODELLNAME: " & DR.Item(4), MsgBoxStyle.Critical, "Fehler in Zeile: " & Row & ":")
                        'ClassLoggerSW.Add("#### Fehler bei Import Refliste in Zeile: " & Row)
                        'ClassLoggerSW.Add("#### Fehlernachricht: " & ex.Message)
                        ' End Try
                    Next
                    ClassLoggerSW.Add("==> Excel-Daten importiert: " & Now, False)
                    ClassLoggerSW.Add("", False)
                    '  Me.TBIMPORT_PRODUKTTableAdapter.PRINSERT_PRODUKT_VERTRAG()
                    strConnection.Close()
                    TBIMPORT_PRODUKTE_DUPLIKATETableAdapter.Fill(MyDataset.TBIMPORT_PRODUKTE_DUPLIKATE)
                    If MyDataset.TBIMPORT_PRODUKTE_DUPLIKATE.Rows.Count > 0 Then
                        MsgBox("ACHTUNG: Es wurden insgesamt " & AnzRow & " Zeilen erfolgreich eingelesen!" & vbNewLine & "Aber die Referenzliste enthält '" & MyDataset.TBIMPORT_PRODUKTE_DUPLIKATE.Rows.Count & "' Duplikate!! Dies kann zu Fehlern im Abgleich führen!", MsgBoxStyle.Critical)
                        ClassLoggerSW.Add("==> Achtung die Refliste enthielt '" & MyDataset.TBIMPORT_PRODUKTE_DUPLIKATE.Rows.Count & "' Duplikate - User wird darauf hingewiesen!", False)
                        TBIMPORT_PRODUKTE_DUPLIKATEDataGridView.Visible = True
                        Me.Size = New System.Drawing.Size(362, 420)
                    Else
                        TBIMPORT_PRODUKTE_DUPLIKATEDataGridView.Visible = False
                        Me.Size = New System.Drawing.Size(362, 187)
                        MsgBox("Es wurden insgesamt " & AnzRow & " Zeilen erfolgreich eingelesen!", MsgBoxStyle.Information, "Erfolgsmeldung:")

                    End If
                    ClassLoggerSW.Add("==> Referenz-Liste erfolgreich eingelesen und verarbeitet: " & Now, False)

                    'Catch ex As Exception
                    '    ClassLoggerSW.Add("#### Fehler bei Import Refliste")
                    '    ClassLoggerSW.Add("#### Fehlernachricht: " & ex.Message)
                    '    MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei Import:")
                    'End Try
                End If
            End If
            Cursor = Cursors.Default
        End If
        
    End Sub
    Private Function NullVerhindern(Value As Object)
        Dim str As String
        If Value.GetType.ToString = "System.DBNull" Then
            str = ""
        Else
            str = Value.ToString()
        End If
        Return str
    End Function

    Private Sub btnexit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnexit.Click
        Me.Close()
    End Sub

    Private Sub frmImport_Produkte_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Me.Size = New System.Drawing.Size(362, 187)
            Me.TBIMPORT_PRODUKTTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
            Me.TBVERTRAEGETableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
            Me.TBPRODUKT_VERTRAGTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
            Me.TBGERAETE_NOTINLISTTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
            Me.TBREFLISTE_HISTORYTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
            Me.TBMANDANTENTableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString
            Me.TBIMPORT_PRODUKTE_DUPLIKATETableAdapter.Connection.ConnectionString = My.Settings.ConfigConnectionString

            Me.TBMANDANTENTableAdapter.Fill(Me.MyDataset.TBMANDANTEN)
            cmbMandant.SelectedIndex = -1
        Catch ex As Exception
            MsgBox("Fehlerbeschreibung: " & ex.Message.ToString, MsgBoxStyle.Critical, "Fehler beim Laden des Formulares:")
        End Try
    End Sub

    Private Sub TabControl1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles TabControl1.SelectedIndexChanged
        Select Case TabControl1.SelectedIndex
            Case 1
                Try
                    Me.TBREFLISTE_HISTORYTableAdapter.Fill(Me.MyDataset.TBREFLISTE_HISTORY)
                Catch ex As Exception
                    MsgBox("Fehlerbeschreibung: " & ex.Message.ToString, MsgBoxStyle.Critical, "Fehler beim Laden der Historie:")
                End Try
        End Select
    End Sub
End Class