Leo Elsenberg

Programmierung, Datenbanken, IT-Dienstleistungen und IT-Schulungen

Nachfolgend finden Sie den vollständigen, dokumentierten Quellcode des VBA Klassenmoduls frmDB2DMRP:

Option Compare Database
Option Explicit
Public mlngNumDB2Tables             As Long
Public mstrReportTitle              As String
Public mstrSQL                      As String
Private Const mconCurrent           As String = "Aktuelle"
Private Const mconDeleted           As String = "Gelöschte"
Private Const mconDCs               As String = modPublDecl.gconSpace & "Data Collection(s)"
'-------------------------------------------------------------------------------------'
' Prozedur:     Form_Load
'
' Beschreibung: Lädt das Formular.
'               Setzt den Formulartitel und aktualisiert Beschriftung, Tipp- und
'               Statusleistentexte.
'               Ist das Formular modPublDecl.gconFrmHM nicht geöffnet, wird eine
'               Fehlermeldung angezeigt und der Ladevorgang abgebrochen.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub Form_Load()
On Error GoTo Form_Load_Err
    Const conPagePreview            As String = "Seitenansicht: "
    If modPublic.IsFormOpen(modPublDecl.gconFrmHM) = True Then
        If modPublic.GetUserComputerName = False Then
            Resume Form_Load_Exit
        Else
            Call modPublic.GetLoginInfo(False)
            Call ErrLogExists
            With Me
                .Caption = modPublDecl.gconAppTitle & "Berichte und Auswertungen"
                With .cboDCWorkGroup
                    .RowSource = modSQL.QSelDCDLWorkGroup("tblDB2DMUserProfile", _
                                                          "tblDB2DMCMFiles")
                    .Requery
                    If .ListCount <> 0 Then
                        .Value = .ItemData(0)
                        Call cboDCWorkGroup_AfterUpdate
                        With Me.cmdDB2DMDC
                            .StatusBarText = conPagePreview & mconCurrent & mconDCs
                            .ControlTipText = .StatusBarText & _
                                              modPublDecl.gconSpace & modPublDecl.gconAltA
                        End With
                    End If
                End With
                With .cboDLWorkGroup
                    .RowSource = modSQL.QSelDCDLWorkGroup("tblDB2DMCMDeleteLog", _
                                                          "tblDB2DMUserProfile")
                    .Requery
                    If .ListCount <> 0 Then
                        .Value = .ItemData(0)
                         Call cboDLWorkGroup_AfterUpdate
                        With Me.cmdDB2DMDL
                            .StatusBarText = conPagePreview & mconDeleted & mconDCs
                            .ControlTipText = .StatusBarText & _
                                              modPublDecl.gconSpace & modPublDecl.gconAltG
                        End With
                    End If
                End With
                If Forms(modPublDecl.gconFrmHM).mboolHostLogOnOK = False Then
                    .cmdDB2DMAT.Enabled = False
                    .lblDB2DMAT.ForeColor = modPublDecl.gconForeColor
                Else
                    .cmdDB2DMAT.Enabled = True
                    .lblDB2DMAT.ForeColor = 0
                End If
            End With
        End If
    Else
        Resume Form_Load_Err
    End If
Form_Load_Exit:
    Exit Sub
Form_Load_Err:
    If Err.Number <> 0 Then
        Call modPublic.FormReportNotOpen(True, _
                                         True, _
                                         modPublDecl.gconFrmHM, _
                                         Me.Name)
    End If
    Resume Form_Load_Exit
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     ErrLogExists
'
' Beschreibung: In Abhängigkeit davon, ob Daten vorhanden sind, aktiviert bzw.
'               deaktiviert diese Prozedur die Befehlsschaltfläche cmdDB2DMEL
'               und ändert die Vordergundfarbe des zugehörigen Bezeichnungsfelds
'               lblDB2DMEL.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub ErrLogExists()
    Dim dbDAO                       As DAO.Database
    Dim rstDAO                      As DAO.Recordset
    Dim strSQL                      As String
    Dim boolEnabled                 As Boolean
    Dim strControlTippText          As String
    Dim strStatusBarText            As String
    Dim lngForeColor                As Long
    strSQL = modSQL.QSelDelTable("tblDB2TableAttribErrLog", _
                                 False)
    Set dbDAO = CurrentDb()
    Set rstDAO = dbDAO.OpenRecordset(strSQL, _
                                     dbOpenDynaset)
    With rstDAO
        If .EOF Then
            boolEnabled = False
            strStatusBarText = vbNullString
            strControlTippText = strStatusBarText
            lngForeColor = modPublDecl.gconForeColor
        Else
            boolEnabled = True
            strStatusBarText = "Seitenansicht: Log: Table Load: Fehlerhafte " & _
                               "Übereinstimmungen Tabelle(n) und/oder Attribut(e)"
            strControlTippText = strStatusBarText & modPublDecl.gconSpace & modPublDecl.gconAltF
            lngForeColor = 0
        End If
        .Close
        With Me
            With .cmdDB2DMEL
                .Enabled = boolEnabled
                .ControlTipText = strControlTippText
                .StatusBarText = strStatusBarText
            End With
            .lblDB2DMEL.ForeColor = lngForeColor
        End With
    End With
    Set dbDAO = Nothing
    Set rstDAO = Nothing
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     cmdDB2DMDC_Click
'
' Beschreibung: Füllt die Tabelle tblDCTblRepTmp und öffnet den Bericht
'               modPublDecl.gconRepCD durch Aufruf der Prozedur modPublic.OpenReport.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub cmdDB2DMDC_Click()
    With Me
        Call PrepareReportInit(.cboDCWorkGroup, _
                               .cboDCUser, _
                               "tblDB2DMCMFiles", _
                               "tblDB2DMCMDCTables", _
                               "DCID", _
                               modPublDecl.gconRepDC, _
                               False)
    End With
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     cboDCWorkGroup_AfterUpdate
'
' Beschreibung: Legt nach Aktualisierung des Steuerelements cboDCWorkGroup die
'               Datenherkunft des Steuerelements cboDCUser fest.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub cboDCWorkGroup_AfterUpdate()
    With Me.cboDCUser
        .RowSource = modSQL.QSelDCDLUser(IIf(Me.cboDCWorkGroup.Value = modPublDecl.gconSelectAll, _
                                             "*", _
                                             Me.cboDCWorkGroup.Value), _
                                         "tblDB2DMCMFiles", _
                                         "tblDB2DMUserProfile", _
                                         "tblDB2DMCMFiles")
        .Requery
        .Value = .ItemData(0)
    End With
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     cmdDB2DMDL_Click
'
' Beschreibung: Füllt die Tabelle tblDCTblRepTmp und öffnet den Bericht
'               modPublDecl.gconRepDL durch Aufruf der Prozedur modPublic.OpenReport.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub cmdDB2DMDL_Click()
    With Me
        Call PrepareReportInit(.cboDLWorkGroup, _
                               .cboDLUser, _
                               "tblDB2DMCMDeleteLog", _
                               "tblDB2DMCMDCTablesDeleted", _
                               "DelDCID", _
                               modPublDecl.gconRepDL, _
                               True)
    End With
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     cboDLWorkGroup_AfterUpdate
'
' Beschreibung: Legt nach Aktualisierung des Steuerelements cboDLWorkGroup die
'               Datenherkunft des Steuerelements cboDLUser fest.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub cboDLWorkGroup_AfterUpdate()
    With Me.cboDLUser
        .RowSource = modSQL.QSelDCDLUser(IIf(Me.cboDLWorkGroup.Value = modPublDecl.gconSelectAll, _
                                             "*", _
                                             Me.cboDLWorkGroup.Value), _
                                         "tblDB2DMCMDeleteLog", _
                                         "tblDB2DMCMDeleteLog", _
                                         "tblDB2DMUserProfile")
        .Requery
        .Value = .ItemData(0)
    End With
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     PrepareReportInit
'
' Beschreibung: Bereitet den Bericht strReport vor.
'
' Parameter:    ctlControl1
'               ctlControl2
'               strTable1
'               strTable2
'               strField
'               strReport
'               boolDLReport
'-------------------------------------------------------------------------------------'
Private Sub PrepareReportInit(ByVal ctlControl1 As Control, _
                              ByVal ctlControl2 As Control, _
                              ByVal strTable1 As String, _
                              ByVal strTable2 As String, _
                              ByVal strField As String, _
                              ByVal strReport As String, _
                              ByVal boolDLReport As Boolean)
    Dim strWorkGroup                As String
    Dim strUser                     As String
    strWorkGroup = IIf(ctlControl1.Value = modPublDecl.gconSelectAll, _
                       "*", ctlControl1.Value)
    strUser = IIf(ctlControl2.Value = modPublDecl.gconSelectAll, _
                  "*", ctlControl2.Value)
    mstrReportTitle = IIf(boolDLReport = False, mconCurrent, mconDeleted) & _
                      mconDCs & ": " & _
                      IIf(strWorkGroup = "*", "Alle Arbeitsgruppen", _
                                              "Arbeitsgruppe " & ctlControl1.Value) & _
                      " - " & _
                      IIf(strUser = "*", "Alle" & modPublDecl.gconUsers, _
                                         "Bearbeiter(in) " & ctlControl2.Value)
    If boolDLReport = False Then    ' Aktuelle Data Collections
        mstrSQL = modSQL.QSelHostIdDB2DMFiles(strWorkGroup, _
                                              strUser)
    Else                            ' Gelöschte Data Collections
        mstrSQL = modSQL.QSelDB2DMDCMDeleteLog(strWorkGroup, _
                                               strUser)
    End If
    Call PrepareReport(strTable1, _
                       strTable2, _
                       strField, _
                       strReport)
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     PrepareReport
'
' Beschreibung: Erstellt die Tabelle tblDCTblRepTmp und öffnet den Bericht strReport.
'
' Parameter:    strMasterTable
'               strDetailTable
'               strField
'               strReport
'-------------------------------------------------------------------------------------'
Private Sub PrepareReport(ByVal strMasterTable As String, _
                          ByVal strDetailTable As String, _
                          ByVal strField As String, _
                          ByVal strReport As String)
    Call modPublic.SetStatusBarText(16, _
                                    False, _
                                    0)
    If CreatetblDCTblRepTmp(strMasterTable, _
                            strDetailTable, _
                            strField) = True Then
        Call modPublic.OpenReport(strReport)
    Else
        SysCmd acSysCmdRemoveMeter
    End If
End Sub
'-------------------------------------------------------------------------------------'
' Funktion:     CreatetblDCTblRepTmp
'
' Beschreibung: Erstellt die Tabelle tblDCTblRepTmp.
'
' Parameter:    strMasterTable
'               strDetailTable
'               strField
'
' Rückgabe:     Ohne
'-------------------------------------------------------------------------------------'
Private Function CreatetblDCTblRepTmp(ByVal strMasterTable As String, _
                                      ByVal strDetailTable As String, _
                                      ByVal strField As String) As Boolean
On Error GoTo CreatetblDCTblRepTmp_Err
    Dim dbDAO                       As DAO.Database
    Dim rstDAO                      As DAO.Recordset
    Dim dbDAOSrc                    As DAO.Database
    Dim rstDAOSrc                   As DAO.Recordset
    Dim dbDAOTmp                    As DAO.Database
    Dim rstDAOTmp                   As DAO.Recordset
    Dim strSQL                      As String
    Dim strDB2Env                   As String
    Dim stfTable                    As String * 9   ' Leerzeichen nach Tablename
    Dim strTableList                As String
    Dim intPos                      As Integer
    Dim lngDCID                     As Long
    Dim lngNumDB2Tables             As Long
    strSQL = modSQL.QSelDelTable("tblDCTblRepTmp", _
                                 True)
    CurrentDb.Execute strSQL
    strSQL = modSQL.QSelTblFldOrderByFld(strMasterTable, _
                                         strField, _
                                         vbNullString)
    Set dbDAOSrc = CurrentDb()
    Set rstDAOSrc = dbDAOSrc.OpenRecordset(strSQL, _
                                           dbOpenSnapshot)
    Do Until rstDAOSrc.EOF
        strSQL = modSQL.QSelDCIDDelDCID(strMasterTable, _
                                        strDetailTable, _
                                        strField, _
                                        rstDAOSrc.Fields(0))
        Set dbDAO = CurrentDb()
        Set rstDAO = dbDAO.OpenRecordset(strSQL, _
                                         dbOpenSnapshot)
        Set dbDAOTmp = CurrentDb()
        Set rstDAOTmp = dbDAOTmp.OpenRecordset("tblDCTblRepTmp", _
                                               dbOpenDynaset)
        With rstDAO
            If Not .EOF Then
                lngDCID = .Fields(0)
                intPos = InStr(1, !CreatorName, modPublDecl.gconFullStop)
                strDB2Env = Left(!CreatorName, intPos - 1)
                Do Until .EOF
                    lngNumDB2Tables = lngNumDB2Tables + 1
                    stfTable = Mid(!CreatorName, intPos + 1, Len(!CreatorName))
                    strTableList = strTableList & stfTable
                    If lngNumDB2Tables Mod 13 = 0 Then
                        strTableList = strTableList & vbCrLf
                    End If
                    .MoveNext
                Loop
                With rstDAOTmp
                    .AddNew
                    !NTUserID = Trim(Left(modPublDecl.gstrWinUserID, 32))
                    !DCID = lngDCID
                    !DB2Env = strDB2Env
                    !DB2Tables = strTableList
                    !NumDB2Tables = lngNumDB2Tables
                    .Update
                    .Close
                End With
            End If
            .Close
        End With
        strTableList = vbNullString
        lngNumDB2Tables = 0
        rstDAOSrc.MoveNext
    Loop
    CreatetblDCTblRepTmp = True
CreatetblDCTblRepTmp_Exit:
    Set dbDAO = Nothing
    Set rstDAO = Nothing
    Set dbDAOTmp = Nothing
    Set rstDAOTmp = Nothing
    rstDAOSrc.Close
    Set dbDAOSrc = Nothing
    Set rstDAOSrc = Nothing
    Exit Function
CreatetblDCTblRepTmp_Err:
    CreatetblDCTblRepTmp = False
    Call modPublic.ShowMsgBox(Err.Description, _
                              modPublDecl.gconOkExcStyle, _
                              "Bericht generieren", _
                              True)
    Resume CreatetblDCTblRepTmp_Exit
End Function
'-------------------------------------------------------------------------------------'
' Prozedur:     cmdDB2DMAD_Click
'
' Beschreibung: Öffnet den Bericht modPublDecl.gconRepAD durch Aufruf der Prozedur
'               modPublic.OpenReport.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub cmdDB2DMAD_Click()
    Call modPublic.OpenReport(modPublDecl.gconRepAD)
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     cmdDB2DMAT_Click
'
' Beschreibung: Öffnet den Bericht modPublDecl.gconRepAT durch Aufruf der Prozedur
'               modPublic.OpenReport.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub cmdDB2DMAT_Click()
    Call CreateDB2TablesRepTmp
    Call modPublic.OpenReport(modPublDecl.gconRepAT)
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     CreateDB2TablesRepTmp
'
' Beschreibung: Erstellt die Datenbasis des Berichts modPublDecl.gconRepAT.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Sub CreateDB2TablesRepTmp()
On Error GoTo CreateDB2TablesRepTmp_Err
    Dim dbDAO                       As DAO.Database
    Dim rstDAO                      As DAO.Recordset
    Dim dbDAOTarget                 As DAO.Database
    Dim rstDAOTarget                As DAO.Recordset
    Dim strSQL                      As String
    Dim strDB2Env                   As String
    Dim stfDB2Table                 As String * 9
    Dim stfDB2TableTypeProt         As String * 7
    Dim strTableList                As String
    Dim lngTableCnt                 As Long
    strSQL = modSQL.QSelDelTable("tblDB2Tables", _
                                 False)
    Set dbDAO = CurrentDb()
    Set rstDAO = dbDAO.OpenRecordset(strSQL, _
                                     dbOpenSnapshot)
    strSQL = modSQL.QSelDelTable("tblDCTblRepTmp", _
                                 True)
    CurrentDb.Execute strSQL
    strSQL = modSQL.QSelDelTable("tblDCTblRepTmp", _
                                 False)
    Set dbDAOTarget = CurrentDb()
    Set rstDAOTarget = dbDAOTarget.OpenRecordset(strSQL, _
                                                 dbOpenDynaset)
    With rstDAO
        .MoveFirst
        mlngNumDB2Tables = 0
        strDB2Env = !CREATOR
        Do Until .EOF
            strTableList = vbNullString
            lngTableCnt = 0
            Do Until strDB2Env <> !CREATOR
                stfDB2Table = !Name
                stfDB2TableTypeProt = "[" & !Type & modPublDecl.gconSpace & !PROTOCOL & "]"
                lngTableCnt = lngTableCnt + 1
                strTableList = strTableList & stfDB2Table & stfDB2TableTypeProt
                If lngTableCnt Mod 8 = 0 Then
                    strTableList = strTableList & vbCrLf
                End If
                .MoveNext
            Loop
            With rstDAOTarget
                .AddNew
                !DB2Env = strDB2Env
                !DB2Tables = strTableList
                !NumDB2Tables = lngTableCnt
                mlngNumDB2Tables = mlngNumDB2Tables + lngTableCnt
                .Update
            End With
            strDB2Env = !CREATOR
        Loop
        .Close
        rstDAOTarget.Close
    End With
CreateDB2TablesRepTmp_Exit:
    Set dbDAO = Nothing
    Set rstDAO = Nothing
    Set dbDAOTarget = Nothing
    Set rstDAOTarget = Nothing
    Exit Sub
CreateDB2TablesRepTmp_Err:
    Resume CreateDB2TablesRepTmp_Exit
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     cmdDB2DMUL_Click
'
' Beschreibung: Öffnet den Bericht modPublDecl.gconRepUL durch Aufruf der Prozedur
'               modPublic.OpenReport.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub cmdDB2DMUL_Click()
    Call modPublic.OpenReport(modPublDecl.gconRepUL)
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     cmdDB2DMLL_Click
'
' Beschreibung: Öffnet den Bericht modPublDecl.gconRepLL durch Aufruf der Prozedur
'               modPublic.OpenReport.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub cmdDB2DMLL_Click()
    Call modPublic.OpenReport(modPublDecl.gconRepLL)
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     cmdDB2DMCL_Click
'
' Beschreibung: Öffnet den Bericht modPublDecl.gconRepCL durch Aufruf der Prozedur
'               modPublic.OpenReport.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub cmdDB2DMCL_Click()
    Call modPublic.OpenReport(modPublDecl.gconRepCL)
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     cmdDB2DMRPH_Click
'
' Beschreibung: Öffnet das Formular modPublDecl.gconFrmHI durch Aufruf der Prozedur
'               modPublic.OpenForm.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub cmdDB2DMRPH_Click()
    Call modPublic.OpenForm(modPublDecl.gconFrmHI)
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     cmdDB2DMEL_Click
'
' Beschreibung: Öffnet den Bericht modPublDecl.gconRepEL durch Aufruf der Prozedur
'               modPublic.OpenReport.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub cmdDB2DMEL_Click()
    Call OpenReport(modPublDecl.gconRepEL)
End Sub
'-------------------------------------------------------------------------------------'
' Prozedur:     cmdClose_Click
'
' Beschreibung: Löscht alle Datensätze der Tabelle tblDCTblRepTmp und ruft die Funktion
'               modPublic.CloseForm auf.
'
' Parameter:    Ohne
'-------------------------------------------------------------------------------------'
Private Sub cmdClose_Click()
    Dim strSQL                      As String
    strSQL = modSQL.QSelDelTable("tblDCTblRepTmp", _
                                 True)
    CurrentDb.Execute strSQL
    Call modPublic.CloseForm(Me.Name)
End Sub