Leo Elsenberg

Programmierung, Datenbanken, IT-Dienstleistungen und IT-Schulungen

Nachfolgend finden Sie den vollständigen, dokumentierten Quellcode des VBA Moduls modSQL:

Option Compare Database
Option Explicit
'-------------------------------------------------------------------------------------'
' Funktion:         QSelTableType
'
' Auswahlabfrage:   Erstellt eine UNION Abfrage zur Ermittlung der IBM DB2 Umgebungen
'                   (CREATOR), Tabellen (NAME), der Tabellentypen (TYPE) und
'                   Feststellung, ob es sich bei der Tabelle um eine Protokolltabelle
'                   (PROTOCOL) handelt.
'                   Es werden alle freigegebenen IBM DB2 Host Umgebungen der Tabelle
'                   tblDB2EnvSQLCfg durchlaufen.
'
' Parameter:        Ohne
'
' Rückgabe:         QSelTableType
'-------------------------------------------------------------------------------------'
Public Function QSelTableType() As String
On Error GoTo QSelTableType_Err
    Dim dbDAO                       As DAO.Database
    Dim rstDAO                      As DAO.Recordset
    Dim strSQL                      As String
    Dim intCnt                      As Integer
    Dim boolErr                     As Boolean
    Dim avntSQLEval()               As Variant
    avntSQLEval = Array("Between", "In", "Like")
    strSQL = QSelDelTable("tblDB2EnvSQLCfg", _
                          False)
    Set dbDAO = CurrentDb()
    Set rstDAO = dbDAO.OpenRecordset(strSQL, _
                                     dbOpenSnapshot)
    With rstDAO
        .MoveFirst
        Do Until .EOF
            If !DB2UsageOK = True Then
                QSelTableType = QSelTableType & _
                    IIf(intCnt > 0, "UNION " & vbCrLf, vbNullString) & _
                    "SELECT CREATOR, NAME, '" & !DB2Type & "' AS TYPE, '" & _
                    !DB2Protocol & "' AS PROTOCOL " & _
                    "FROM " & modPublDecl.gconAccIBMSysTable & modPublDecl.gconSpace & _
                    vbCrLf
                QSelTableType = QSelTableType & _
                    "WHERE CREATOR " & _
                    IIf(IsNull(!DB2EnvTo) = False, _
                        avntSQLEval(0) & " '" & !DB2EnvFrom & "' AND '" & !DB2EnvTo, _
                        avntSQLEval(2) & " '" & !DB2EnvFrom)
                QSelTableType = QSelTableType & "' AND NAME "
                If !DB2SqlEval = avntSQLEval(0) Then
                    QSelTableType = QSelTableType & _
                    IIf(IsNull(!DB2TablesTo) = False, _
                        avntSQLEval(0) & " '" & !DB2TablesFrom & "' AND '" & !DB2TablesTo, _
                        avntSQLEval(2) & " '" & !DB2TablesFrom) & "' " & vbCrLf
                ElseIf !DB2SqlEval = avntSQLEval(1) Then
                    QSelTableType = QSelTableType & _
                        avntSQLEval(1) & " ('" & !DB2TablesFrom & "', '"
                    QSelTableType = QSelTableType & _
                        IIf(IsNull(!DB2TablesTo) = False, _
                            !DB2TablesTo, vbNullString) & "') " & vbCrLf
                ElseIf !DB2SqlEval = avntSQLEval(2) Then
                    QSelTableType = QSelTableType & _
                        avntSQLEval(2) & " '" & !DB2TablesFrom & "' " & vbCrLf
                End If
                intCnt = intCnt + 1
            End If
            .MoveNext
        Loop
        .Close
        QSelTableType = QSelTableType & "ORDER BY CREATOR, NAME, TYPE"
    End With
    boolErr = IIf(intCnt = 0, True, False)
QSelTableType_Exit:
    Set dbDAO = Nothing
    Set rstDAO = Nothing
    If boolErr = True Then
        QSelTableType = vbNullString
        Call modPublic.ShowMsgBox(IIf(intCnt = 0, "Keine " & modPublDecl.gconDB2 & _
                                  " Umgebung(en)/Tabelle(n) festgelegt.", Err.Description), _
                                  modPublDecl.gconOkCritStyle, _
                                  modPublDecl.gconDB2 & " Tabellentyp ermitteln", _
                                  True)
    End If
    Exit Function
QSelTableType_Err:
    boolErr = True
    intCnt = 1
    Resume QSelTableType_Exit
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelWGDC
'
' Auswahlabfrage:   SQL Anweisung zur Auswahl der Data Collections der aktuellen
'                   Arbeitsgruppe.
'
' Parameter:        Ohne
'
' Rückgabe:         QSelWGDC
'-------------------------------------------------------------------------------------'
Public Function QSelWGDC() As String
    QSelWGDC = _
        "SELECT DISTINCT tblDB2DMCMFiles.*, " & vbCrLf & _
        "tblDB2DMUserProfile.ProfileGroup " & vbCrLf & _
        "FROM ((tblDB2DMUserProfile " & vbCrLf & _
        "INNER JOIN tblDB2DMCMFiles " & vbCrLf & _
        "ON tblDB2DMUserProfile.NTUserID = tblDB2DMCMFiles.NTUserID) " & vbCrLf & _
        "LEFT JOIN tblDB2DMCMDCTables " & vbCrLf & _
        "ON tblDB2DMCMFiles.DCID = tblDB2DMCMDCTables.DCID) " & vbCrLf & _
        "INNER JOIN tblDB2DMLogonInfo " & vbCrLf & _
        "ON tblDB2DMUserProfile.NTUserID = tblDB2DMLogonInfo.NTUserID " & vbCrLf & _
        "WHERE tblDB2DMUserProfile.ProfileGroup Like " & _
        "'" & modPublDecl.gstrWorkGroup & "' " & vbCrLf & _
        "ORDER BY tblDB2DMCMFiles.DCID"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDistUserDC
'
' Auswahlabfrage:   SQL Anweisung zur Auswahl der Data Collections der angemeldeten
'                   Bearbeiterin/des angemeldeten Bearbeiters (Windows User ID).
'
' Parameter:        strWinUserID
'
' Rückgabe:         QSelDistUserDC
'-------------------------------------------------------------------------------------'
Public Function QSelDistUserDC(ByVal strWinUserID As String) As String
    QSelDistUserDC = _
        "SELECT DISTINCT tblDB2DMCMFiles.* " & vbCrLf & _
        "FROM tblDB2DMCMFiles " & vbCrLf & _
        "LEFT JOIN tblDB2DMCMDCTables " & vbCrLf & _
        "ON tblDB2DMCMFiles.DCID = tblDB2DMCMDCTables.DCID " & vbCrLf & _
        NTUserIDEQstrWinUserID(strWinUserID, _
                               True, _
                               False, _
                               True, _
                               True, _
                               "tblDB2DMCMFiles") & _
        "ORDER BY tblDB2DMCMFiles.DCID"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDelTable
'
' Auswahl- oder
' Löschabfrage:     Alle Sätze der Tabelle strTable, gesteuert durch boolDelete,
'                   auswählen oder löschen.
'
' Parameter:        strTable
'                   boolDelete
'
' Rückgabe:         QSelDelTable
'-------------------------------------------------------------------------------------'
Public Function QSelDelTable(ByVal strTable As String, _
                             ByVal boolDelete As Boolean) As String
    QSelDelTable = _
        DelOrSel(boolDelete) & "* " & vbCrLf & _
        "FROM " & strTable
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDistEnvCreator
'
' Auswahlabfrage:   Eindeutigen CREATOR der Tabelle tblDB2Tables bei
'                   übereinstimmender/nicht übereinstimmender DB2 Umgebung (strDB2Env),
'                   gesteuert durch boolNot, auswählen.
'
' Parameter:        strDB2Env
'                   boolNot
'
' Rückgabe:         QSelDistEnvCreator
'-------------------------------------------------------------------------------------'
Public Function QSelDistEnvCreator(ByVal strDB2Env As String, _
                                   ByVal boolNot As Boolean) As String
    QSelDistEnvCreator = _
        "SELECT DISTINCT CREATOR " & vbCrLf & _
        "FROM tblDB2Tables " & vbCrLf & _
        "WHERE Trim(CREATOR) " & NotOrNull(boolNot) & "Like '" & strDB2Env & "'"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelCorrDCTables
'
' Auswahlabfrage:   Alle Datensätze der Tabelle tblDB2DMCMDCTablesKey mit
'                   übereinstimmender Tabelle und DCID auswählen.
'
' Parameter:        lngDCID
'                   strTable
'                   strKey
'
' Rückgabe:         QSelCorrDCTables
'-------------------------------------------------------------------------------------'
Public Function QSelCorrDCTables(ByVal lngDCID As Long, _
                                 ByVal strTable As String, _
                                 ByVal strKey As String) As String
    QSelCorrDCTables = _
        QSelDelTable("tblDB2DMCMDCTablesKey", _
                     False) & modPublDecl.gconSpace & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True) & _
        "AND Tabelle Like '" & strTable & "' " & vbCrLf & _
        "AND DB2KeyVal Like '" & strKey & "'"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDistDCKeyTables
'
' Auswahlabfrage:   Eindeutige Tabellennamen der Tabelle tblDB2DMCMDCTablesKey mit
'                   übereinstimmender DCID und, falls strDelDCID <> vbNullString,
'                   DelDCID auswählen.
'
' Parameter:        strTable
'                   lngDCID
'                   strDelDCID
'
' Rückgabe:         QSelDistDCKeyTables
'-------------------------------------------------------------------------------------'
Public Function QSelDistDCKeyTables(ByVal strTable As String, _
                                    ByVal lngDCID As Long, _
                                    ByVal strDelDCID As String) As String
    QSelDistDCKeyTables = _
        "SELECT DISTINCT Tabelle AS TabellenAuswahl " & vbCrLf & _
        "FROM " & strTable & modPublDecl.gconSpace & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True)
    If Not (strDelDCID = vbNullString) Then
        QSelDistDCKeyTables = QSelDistDCKeyTables & _
            "AND Format(DelDCID,'" & modPublDecl.gconlngDCIDFmt & "') Like '" & _
            strDelDCID & "'" & vbCrLf
    End If
    QSelDistDCKeyTables = QSelDistDCKeyTables & _
        UnionSelAll(True, _
                    "TabellenAuswahl", _
                    "tblDB2DMCMDCTablesKeyDelete", _
                    "TabellenAuswahl")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDistDCTablesKey
'
' Auswahlabfrage:   Eindeutigen Key der Tabelle tblDB2DMCMDCTablesKey mit
'                   übereinstimmender DCID und Tabelle auswählen.
'
' Parameter:        strTable
'                   lngDCID
'                   strDB2Table
'                   strDB2Key
'                   strOrderByField
'
' Rückgabe:         QSelDistTCTablesKey
'-------------------------------------------------------------------------------------'
Public Function QSelDistDCTablesKey(ByVal strTable As String, _
                                    ByVal lngDCID As Long, _
                                    ByVal strDB2Table As String, _
                                    ByVal strDB2Key As String, _
                                    ByVal strOrderByField As String) As String
    QSelDistDCTablesKey = _
        "SELECT DISTINCT DCID, DB2KeyVal " & vbCrLf & _
        "FROM " & strTable & modPublDecl.gconSpace & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True) & _
        "AND Tabelle Like '" & strDB2Table & "' " & vbCrLf & _
        "AND DB2KeyVal Like '" & strDB2Key & "' " & vbCrLf & _
        "ORDER BY " & strOrderByField
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDCTablesKeyDel
'
' Auswahlabfrage:   Alle Sätze der Tabelle tblDB2DMCMDCTablesKeyDelete mit
'                   übereinstimmender DelDCID, Tabelle und übereinstimmendem Key
'                   auswählen.
'
' Parameter:        lngDCID
'                   strDCIDColl
'                   strTable
'                   strKey
'
' Rückgabe:         QSelDCTablesKeyDel
'-------------------------------------------------------------------------------------'
Public Function QSelDCTablesKeyDel(ByVal lngDCID As String, _
                                   ByVal strDCIDColl As String, _
                                   ByVal strTable As String, _
                                   ByVal strKey As String) As String
    QSelDCTablesKeyDel = _
        QSelDelTable("tblDB2DMCMDCTablesKeyDelete", _
                     False) & modPublDecl.gconSpace & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True) & _
        "AND DelDCID In (" & strDCIDColl & ") " & vbCrLf & _
        "AND Tabelle Like '" & strTable & "' " & vbCrLf & _
        "AND DB2KeyVal Like '" & strKey & "' " & vbCrLf & _
        "ORDER BY DelDCID, Tabelle, DB2KeyVal"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDistTablesKeyDel
'
' Auswahlabfrage:   Eindeutige Sätze der Tabelle tblDB2DMCMDCTablesKeyDelete mit
'                   übereinstimmender DCID auswählen.
'
' Parameter:        lngDCID
'
' Rückgabe:         QSelDistTablesKeyDel
'-------------------------------------------------------------------------------------'
Public Function QSelDistTablesKeyDel(ByVal lngDCID As Long) As String
    QSelDistTablesKeyDel = _
        "SELECT DISTINCT DCID, DelDCID " & vbCrLf & _
        "FROM tblDB2DMCMDCTablesKeyDelete " & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True)
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelLoggedOn
'
' Auswahlabfrage:   Datensätze der Tabelle tblDB2DMLogonInfo (LoggedOn = True)
'                   auswählen.
'
' Parameter:        boolAllUsers
'                   strWinUserID
'
' Rückgabe:         QSelLoggedOn
'-------------------------------------------------------------------------------------'
Public Function QSelLoggedOn(ByVal boolAllUsers As Boolean, _
                             ByVal strWinUserID As String) As String
    QSelLoggedOn = _
        "SELECT * " & vbCrLf & _
        "FROM tblDB2DMLogonInfo " & vbCrLf & _
        NTUserIDEQstrWinUserID(strWinUserID, _
                               True, _
                               IIf(strWinUserID = modPublDecl.gstrWinUserID, True, False), _
                               True, _
                               True) & _
        "AND LoggedOn=True " & vbCrLf & _
        "ORDER BY DateTimeLoggedOn, NTUserID"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelLoggedOnExcCurUser
'
' Auswahlabfrage:   Alle angemeldeten Bearbeiter/innen, mit Ausnahme der angemeldeten
'                   Administratorin/des angemeldeten Administrators, auswählen.
'
' Parameter:        Ohne
'
' Rückgabe:         QSelLoggedOnExcCurUser
'-------------------------------------------------------------------------------------'
Public Function QSelLoggedOnExcCurUser() As String
    QSelLoggedOnExcCurUser = _
        "SELECT tblDB2DMUserProfile.EMail, tblDB2DMLogonInfo.LoggedOn, " & _
        "tblDB2DMLogonInfo.IBMHostID" & vbCrLf & _
        "FROM tblDB2DMUserProfile " & vbCrLf & _
        "INNER JOIN tblDB2DMLogonInfo " & vbCrLf & _
        "ON tblDB2DMUserProfile.NTUserID = tblDB2DMLogonInfo.NTUserID " & vbCrLf & _
        "WHERE tblDB2DMUserProfile.EMail Is Not Null " & vbCrLf & _
        "AND tblDB2DMLogonInfo.LoggedOn=True " & vbCrLf & _
        "AND tblDB2DMLogonInfo.NTUserID Not Like '" & modPublDecl.gstrWinUserID & "'"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelNumRecs
'
' Auswahlabfrage:   Datensätze des Feldes strField der Tabelle auswählen.
'                   Bedingungen werden durch bytCondition gesteuert.
'
' Parameter:        strTable
'                   strField
'                   bytCondition
'
' Rückgabe:         QSelNumRecs
'-------------------------------------------------------------------------------------'
Public Function QSelNumRecs(ByVal strTable As String, _
                            ByVal strField As String, _
                            ByVal bytCondition As Byte) As String
    Dim strCondition                As String
    QSelNumRecs = _
        "SELECT Count(" & strField & ") AS NumRecs " & vbCrLf & _
        "FROM " & strTable
        If bytCondition = 0 Then
            strCondition = vbNullString
        ElseIf bytCondition = 1 Then
            strCondition = "WHERE JobTimeOut > Now()"
        ElseIf bytCondition = 2 Then
            strCondition = "WHERE IsAdmin=True"
        ElseIf bytCondition = 3 Then
            strCondition = "HAVING LoggedOn=True "
        End If
        If Not (strCondition = vbNullString) Then
            QSelNumRecs = QSelNumRecs & modPublDecl.gconSpace & vbCrLf & _
                          strCondition
        End If
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelUserProfileGrp
'
' Auswahlabfrage:   Windows User ID, Arbeitsgruppe und AllowJclClear aus den Tabellen
'                   tblDB2DMUserProfile und tblDB2DMUserGroup bei übereinstimmender
'                   Windows User ID auswählen.
'
' Parameter:        strWinUserID
'
' Rückgabe:         QSelUserProfileGrp
'-------------------------------------------------------------------------------------'
Public Function QSelUserProfileGrp(ByVal strWinUserID As String) As String
    QSelUserProfileGrp = _
        "SELECT tblDB2DMUserProfile.NTUserID, " & vbCrLf & _
        "tblDB2DMUserProfile.ProfileGroup, " & vbCrLf & _
        "tblDB2DMUserGroup.AllowJclClear " & vbCrLf & _
        "FROM tblDB2DMUserGroup " & vbCrLf & _
        "INNER JOIN tblDB2DMUserProfile " & vbCrLf & _
        "ON tblDB2DMUserGroup.ProfileGroup = tblDB2DMUserProfile.ProfileGroup " & vbCrLf & _
        NTUserIDEQstrWinUserID(strWinUserID, _
                               True, _
                               False, _
                               False, _
                               False, _
                               "tblDB2DMUserProfile")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDistAllExcCurrUser
'
' Auswahlabfrage:   NTUserID der Tabelle tblDB2DMUserProfile bei nicht übereinstimmender
'                   strWinUserID und übereinstimmender Arbeitsgruppe auswählen.
'
' Parameter:        strWinUserID
'                   strWorkGroup
'
' Rückgabe:         QSelDistAllExcCurrUser
'-------------------------------------------------------------------------------------'
Public Function QSelDistAllExcCurrUser(ByVal strWinUserID As String, _
                                       ByVal strWorkGroup As String) As String
    QSelDistAllExcCurrUser = _
        "SELECT DISTINCT Trim(tblDB2DMUserProfile.NTUserID) AS WinUserID " & vbCrLf & _
        "FROM (tblDB2DMUserProfile " & vbCrLf & _
        "INNER JOIN tblDB2DMLogonInfo " & vbCrLf & _
        "ON tblDB2DMUserProfile.NTUserID = tblDB2DMLogonInfo.NTUserID) " & vbCrLf & _
        "INNER JOIN tblDB2DMCMFiles " & vbCrLf & _
        "ON tblDB2DMLogonInfo.NTUserID = tblDB2DMCMFiles.NTUserID " & vbCrLf & _
        "WHERE Trim(tblDB2DMUserProfile.NTUserID) " & _
        "Not Like '" & strWinUserID & "' " & vbCrLf & _
        "AND Trim(tblDB2DMUserProfile.ProfileGroup) " & _
        "Like '" & strWorkGroup & "' " & vbCrLf & _
        "ORDER BY Trim(tblDB2DMUserProfile.NTUserID)"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelCorDCIDHostID
'
' Auswahlabfrage:   Datensätze der Tabelle tblDB2DMCMDCTables bei übereinstimmender
'                   DCID und Host ID auswählen.
'
' Parameter:        lngDCID
'                   strHostID
'
' Rückgabe:         QSelCorDCIDHostID
'-------------------------------------------------------------------------------------'
Public Function QSelCorDCIDHostID(ByVal lngDCID As Long, _
                                  ByVal strHostID As String) As String
    QSelCorDCIDHostID = _
        "SELECT tblDB2DMCMDCTables.DCID, " & vbCrLf & _
        "tblDB2DMCMDCTables.CreatorName, " & vbCrLf & _
        "tblDB2DMCMFiles.HostID " & vbCrLf & _
        "FROM tblDB2DMCMFiles " & vbCrLf & _
        "INNER JOIN tblDB2DMCMDCTables " & vbCrLf & _
        "ON tblDB2DMCMFiles.DCID = tblDB2DMCMDCTables.DCID " & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True, "tblDB2DMCMDCTables") & _
        "AND tblDB2DMCMFiles.HostID Like '" & strHostID & "'"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDB2Type
'
' Auswahlabfrage:   UNION Abfrage auf TYPE der Tabelle tblDB2Tables mit
'                   übereinstimmendem CREATOR durch Lesen eines DAO Recordsets
'                   (Tabelle tblDB2Type) erstellen.
'
' Parameter:        strDB2Env
'
' Rückgabe:         QSelDB2Type
'-------------------------------------------------------------------------------------'
Public Function QSelDB2Type(ByVal strDB2Env As String) As String
    Dim dbDAO                       As DAO.Database
    Dim rstDAO                      As DAO.Recordset
    Dim strSQL                      As String
    strSQL = QSelDelTable("tblDB2Type", _
                          False)
    Set dbDAO = CurrentDb()
    Set rstDAO = dbDAO.OpenRecordset(strSQL, _
                                     dbOpenSnapshot)
    With rstDAO
        .MoveFirst
        If .EOF = False Then
            QSelDB2Type = _
                "SELECT TOP 1 '" & modPublDecl.gconSelectAll & "' " & _
                "AS Tabellentyp, tblDB2Tables.TYPE " & vbCrLf & _
                "FROM tblDB2Tables " & vbCrLf & _
                "WHERE Trim(CREATOR) Like '" & strDB2Env & "' " & vbCrLf & _
                "AND tblDB2Tables.TYPE Like '*' "
            Do Until .EOF
                QSelDB2Type = QSelDB2Type & vbCrLf & _
                    "UNION " & vbCrLf & _
                    "SELECT DISTINCT '" & !Description & "' " & _
                    "AS Tabellentyp, tblDB2Tables.TYPE " & vbCrLf & _
                    "FROM tblDB2Tables " & vbCrLf & _
                    "WHERE Trim(CREATOR) Like '" & strDB2Env & "' " & vbCrLf & _
                    "AND tblDB2Tables.TYPE Like '" & !DB2Type & "'"
                .MoveNext
            Loop
            .Close
            QSelDB2Type = QSelDB2Type & vbCrLf & _
                          "ORDER BY Tabellentyp"
        ElseIf .EOF = True Then
            Call modPublic.ShowMsgBox("Keine " & modPublDecl.gconDB2 & _
                                      " Tabellentypen festgelegt.", _
                                      modPublDecl.gconOkCritStyle, _
                                      "Tabellentyp auswählen", _
                                      True)
            QSelDB2Type = vbNullString
        End If
    End With
    Set dbDAO = Nothing
    Set rstDAO = Nothing
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelNameTypeCorrCreator
'
' Auswahlabfrage:   NAME der Tabelle tblDB2Tables bei übereinstimmendem CREATOR
'                   und übereinstimmendem TYPE auswählen.
'
' Parameter:        strCreator
'                   strTableType
'
' Rückgabe:         QSelNameTypeCorrCreator
'-------------------------------------------------------------------------------------'
Public Function QSelNameTypeCorrCreator(ByVal strCreator As String, _
                                        ByVal strTableType As String) As String
    QSelNameTypeCorrCreator = _
        "SELECT NAME " & vbCrLf & _
        "FROM tblDB2Tables " & vbCrLf & _
        "WHERE Trim(CREATOR) Like '" & strCreator & "' " & vbCrLf & _
        "AND TYPE Like '" & strTableType & "' " & vbCrLf & _
        "ORDER BY NAME"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelTblFldOrderByFld
'
' Auswahlabfrage:   Alle Datensätze der Tabelle strTable mit übereinstimmendem Feld
'                   strField, sortiert nach strOrderByField auswählen.
'
' Parameter:        strTable
'                   strField
'                   strOrderByField
'
' Rückgabe:         QSelTblFldOrderByFld
'-------------------------------------------------------------------------------------'
Public Function QSelTblFldOrderByFld(ByVal strTable As String, _
                                     ByVal strField As String, _
                                     ByVal strOrderByField As String) As String
    QSelTblFldOrderByFld = _
        "SELECT " & strField & modPublDecl.gconSpace & vbCrLf & _
        "FROM " & strTable
    If Not (strOrderByField = vbNullString) Then
        QSelTblFldOrderByFld = QSelTblFldOrderByFld & modPublDecl.gconSpace & vbCrLf & _
            "ORDER BY " & strOrderByField
    End If
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDB2DMDCMDeleteLog
'
' Auswahlabfrage:   Alle Datensätze der Tabelle tblDB2DMCMDeleteLog mit übereinstimmender
'                   strWorkGroup und strWinUserID auswählen.
'
' Parameter:        strWorkGroup
'                   strWinUserID
'
' Rückgabe:         QSelDB2DMDCMDeleteLog
'-------------------------------------------------------------------------------------'
Public Function QSelDB2DMDCMDeleteLog(ByVal strWorkGroup As String, _
                                      ByVal strWinUserID As String) As String
    QSelDB2DMDCMDeleteLog = _
        QSelDelTable("tblDB2DMCMDeleteLog", _
                     False) & modPublDecl.gconSpace & vbCrLf & _
        "WHERE NTUserID Like '" & strWinUserID & "' " & vbCrLf & _
        "AND NTUserID IN (SELECT NTUserID FROM tblDB2DMUserProfile " & vbCrLf & _
        "WHERE ProfileGroup Like '" & strWorkGroup & "') " & vbCrLf & _
        "ORDER BY NTUserID, DelDCID"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelUserDCs
'
' Auswahlabfrage:   Alle Datensätze der Tabelle tblDB2DMCMFiles mit übereinstimmender
'                   strWinUserID auswählen.
'
' Parameter:        strWinUserID
'
' Rückgabe:         QSelUserDCs
'-------------------------------------------------------------------------------------'
Public Function QSelUserDCs(ByVal strWinUserID As String) As String
    QSelUserDCs = _
        QSelDelTable("tblDB2DMCMFiles", _
                     False) & modPublDecl.gconSpace & vbCrLf & _
        NTUserIDEQstrWinUserID(strWinUserID, _
                               True, _
                               False, _
                               False, _
                               True) & _
        "ORDER BY DCID"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QDelAllKeys
'
' Löschabfrage:     Alle Datensätze der Tabelle tblDB2DMCMDCTablesKeyDelete mit
'                   übereinstimmender Tabelle und DCID löschen.
'
' Parameter:        lngDCID
'                   strDelDCID
'                   strDelTable
'                   strDelKey
'
' Rückgabe:         QDelAllKeys
'-------------------------------------------------------------------------------------'
Public Function QDelAllKeys(ByVal lngDCID As Long, _
                            ByVal strDelDCID As String, _
                            ByVal strDelTable As String, _
                            ByVal strDelKey As String) As String
    QDelAllKeys = _
        QSelDelTable("tblDB2DMCMDCTablesKeyDelete", _
                     True) & modPublDecl.gconSpace & vbCrLf & _
        "WHERE DelDCID Like '" & strDelDCID & "' " & vbCrLf & _
        DCIDEQlngDCID(lngDCID, False) & _
        "AND Tabelle Like '" & strDelTable & "' " & vbCrLf & _
        "AND DB2KeyVal Like '" & strDelKey & "'"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelSearchDC
'
' Auswahlabfrage:   Suche nach Data Collection(s).
'
' Parameter:        strSuchenNach
'                   strSQLOrderBy
'
' Rückgabe:         QSelSearchDC
'-------------------------------------------------------------------------------------'
Public Function QSelSearchDC(ByVal strSuchenNach As String, _
                             ByVal strSQLOrderBy As String) As String
    QSelSearchDC = _
        "SELECT DCID, DCNr, Description AS Beschreibung, DCUmgebung, " & vbCrLf & _
        "Format([EntladeDateTime],'" & modPublDecl.gconEurDateTime & "') " & _
        "AS UnloadDateTime, " & vbCrLf & _
        "Format([LadeDateTime],'" & modPublDecl.gconEurDateTime & "') " & _
        "AS LoadDateTime, " & vbCrLf & _
        "ProfileGroup " & vbCrLf & _
        "FROM tblDB2DMUserProfile " & vbCrLf & _
        "INNER JOIN tblDB2DMCMFiles " & vbCrLf & _
        "ON tblDB2DMUserProfile.NTUserID = tblDB2DMCMFiles.NTUserID " & vbCrLf & _
        "WHERE tblDB2DMUserProfile.ProfileGroup Like '" & modPublDecl.gstrWorkGroup & "' " & vbCrLf & _
        "AND (DCID & DCNr & Description & DCUmgebung & EntladeDateTime) " & vbCrLf & _
        "Like '" & strSuchenNach & "' " & vbCrLf & _
        strSQLOrderBy
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDelCorrTableField
'
' Auswahl- oder
' Löschabfrage:     Datensätze der Tabelle strTable mit übereinstimmendem strField
'                   und dem Wert strFieldVal (falls boolIsLong = True, dann handelt
'                   es sich um den Datentyp Long), gesteuert durch boolDelete,
'                   auswählen oder löschen.
'
' Parameter:        strTable
'                   strField
'                   strFieldVal
'                   boolIsLong
'                   boolDelete
'
' Rückgabe:         QSelDelCorrTableField
'-------------------------------------------------------------------------------------'
Public Function QSelDelCorrTableField(ByVal strTable As String, _
                                      ByVal strField As String, _
                                      ByVal strFieldVal As String, _
                                      ByVal boolIsLong As Boolean, _
                                      ByVal boolDelete As Boolean) As String
    QSelDelCorrTableField = _
        DelOrSel(boolDelete) & "* " & vbCrLf & _
        "FROM " & strTable & modPublDecl.gconSpace & vbCrLf & _
        "WHERE Trim(" & strField & ") "
    If boolIsLong = False Then
        QSelDelCorrTableField = QSelDelCorrTableField & _
            "Like '" & strFieldVal & "'"
    ElseIf boolIsLong = True Then
        QSelDelCorrTableField = QSelDelCorrTableField & _
            "= " & CLng(strFieldVal)
    End If
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDelDB2DMFilesDCTables
'
' Auswahl- oder
' Löschabfrage:     Alle Datensätze der Tabelle tblDB2DMCMDCTables mit übereinstimmender
'                   DCID und übereinstimmendem Creator, gesteuert durch boolDelete,
'                   auswählen oder löschen.
'
' Parameter:        lngDCID
'                   strCreator
'                   boolDelete
'
' Rückgabe:         QSelDelDB2DMFilesDCTables
'-------------------------------------------------------------------------------------'
Function QSelDelDB2DMFilesDCTables(ByVal lngDCID As Long, _
                                   ByVal strCreator As String, _
                                   ByVal boolDelete As Boolean) As String
    QSelDelDB2DMFilesDCTables = _
        DelOrSel(boolDelete) & "tblDB2DMCMDCTables.* " & vbCrLf & _
        "FROM tblDB2DMCMFiles " & vbCrLf & _
        "INNER JOIN tblDB2DMCMDCTables " & vbCrLf & _
        "ON tblDB2DMCMFiles.DCID = tblDB2DMCMDCTables.DCID " & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True, "tblDB2DMCMDCTables") & modPublDecl.gconSpace
    If boolDelete = True Then
        QSelDelDB2DMFilesDCTables = QSelDelDB2DMFilesDCTables & vbCrLf & _
            "AND tblDB2DMCMDCTables.CreatorName Like '" & strCreator & "'"
    ElseIf boolDelete = False Then
        QSelDelDB2DMFilesDCTables = QSelDelDB2DMFilesDCTables & vbCrLf & _
            "AND tblDB2DMCMDCTables.DCID Like tblDB2DMCMFiles.DCID " & vbCrLf & _
            "ORDER BY tblDB2DMCMDCTables.CreatorName"
    End If
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDelCorrDCID
'
' Auswahl- oder
' Löschabfrage:     Alle Datensätze der Tabelle tblDB2DMCMFiles mit übereinstimmender
'                   DCID, gesteuert durch boolDelete, auswählen oder löschen.
'
' Parameter:        lngDCID
'                   boolDelete
'
' Rückgabe:         QSelDelCorrDCID
'-------------------------------------------------------------------------------------'
Public Function QSelDelCorrDCID(ByVal lngDCID As Long, _
                                ByVal boolDelete As Boolean) As String
    QSelDelCorrDCID = _
        DelOrSel(boolDelete) & "* " & vbCrLf & _
        "FROM tblDB2DMCMFiles " & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True)
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QInsDCTablesDeleted
'
' Anfügeabfrage:    Datensätze der Tabelle tblDB2DMCMDCTables mit
'                   übereinstimmender DCID an die Tabelle tblDB2DMCMDCTables
'                   anfügen.
'
' Parameter:        lngDCID
'
' Rückgabe:         QInsDCTablesDeleted
'-------------------------------------------------------------------------------------'
Public Function QInsDCTablesDeleted(ByVal lngDCID As Long) As String
    QInsDCTablesDeleted = _
        "INSERT INTO " & vbCrLf & _
        "tblDB2DMCMDCTablesDeleted ( DelDCID, CreatorName ) " & vbCrLf & _
        "SELECT DCID, CreatorName " & vbCrLf & _
        "FROM tblDB2DMCMDCTables " & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True)
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDeletedDCID
'
' Auswahlabfrage:   Alle Datensätze der Tabelle tblDB2DMCMDeleteLog mit
'                   übereinstimmender lngDCID auswählen.
'
' Parameter:        lngDCID
'
' Rückgabe:         QSelDeletedDCID
'-------------------------------------------------------------------------------------'
Public Function QSelDeletedDCID(ByVal lngDCID As Long) As String
    QSelDeletedDCID = _
        "SELECT DelDCID " & vbCrLf & _
        "FROM tblDB2DMCMDeleteLog " & vbCrLf & _
        "WHERE DelDCID=" & lngDCID
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelSaveKey
'
' Auswahlabfrage:   Alle Datensätze der Tabelle tblDB2Tables mit übereinstimmendem
'                   CREATOR und übereinstimmender DCID auswählen.
'
' Parameter:        lngDCID
'                   strDB2Env
'
' Rückgabe:         QSelSaveKey
'-------------------------------------------------------------------------------------'
Public Function QSelSaveKey(ByVal lngDCID As Long, _
                            ByVal strDB2Env As String) As String
    QSelSaveKey = _
        "SELECT tblDB2DMCMFiles.DCID, " & vbCrLf & _
        "Mid(CreatorName,InStr(CreatorName,'.')+1," & _
        "Len(CreatorName)) AS Tabelle, " & vbCrLf & _
        "tblDB2Tables.CREATOR, tblDB2Type.Default, tblDB2Tables.TYPE " & vbCrLf & _
        "FROM tblDB2Type " & vbCrLf & _
        "INNER JOIN tblDB2Tables " & vbCrLf & _
        "ON tblDB2Type.DB2Type = tblDB2Tables.TYPE, tblDB2DMCMFiles " & vbCrLf & _
        "INNER JOIN tblDB2DMCMDCTables " & vbCrLf & _
        "ON tblDB2DMCMFiles.DCID = tblDB2DMCMDCTables.DCID " & vbCrLf & _
        "WHERE (((tblDB2DMCMFiles.DCID)=" & lngDCID & ") " & vbCrLf & _
        "AND ((tblDB2Tables.CREATOR) Like '" & strDB2Env & "') " & vbCrLf & _
        "AND ((tblDB2Type.Default)=True) " & vbCrLf & _
        "AND ((tblDB2Tables.TYPE) Like ([tblDB2Type].[DB2Type])) " & vbCrLf & _
        "AND ((Mid([CreatorName],InStr([CreatorName],'.')+1," & _
        "Len([CreatorName]))) Like [tblDB2Tables].[NAME]))"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDistTableField
'
' Auswahlabfrage:   Eindeutige Datensätze der Tabelle strTable mit übereinstimmendem
'                   strField auswählen.
'
' Parameter:        strTable
'                   strField
'
' Rückgabe:         QSelDistTableField
'-------------------------------------------------------------------------------------'
Public Function QSelDistTableField(ByVal strTable As String, _
                                   ByVal strField As String) As String
    QSelDistTableField = _
        "SELECT DISTINCT " & strField & modPublDecl.gconSpace & vbCrLf & _
        "FROM " & strTable
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelCntKeyDelete
'
' Auswahlabfrage:   Alle Datensätze der Tabelle tblDB2DMCMFiles mit übereinstimmender
'                   DCID auswählen.
'
' Parameter:        lngDCID
'
' Rückgabe:         QSelCntKeyDelete
'-------------------------------------------------------------------------------------'
Public Function QSelCntKeyDelete(ByVal lngDCID As Long) As String
    QSelCntKeyDelete = _
        "SELECT Count(DelDCID) AS NumRecs " & vbCrLf & _
        "FROM tblDB2DMCMFiles " & vbCrLf & _
        "INNER JOIN tblDB2DMCMDCTablesKeyDelete " & vbCrLf & _
        "ON tblDB2DMCMFiles.DCID = tblDB2DMCMDCTablesKeyDelete.DCID " & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True, "tblDB2DMCMDCTablesKeyDelete")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelCntDCIDKey
'
' Auswahlabfrage:   Anzahl Datensätze der Tabelle tblDB2DMCMDCTablesKey mit
'                   übereinstimmender DCID ermitteln.
'
' Parameter:        lngDCID
'
' Rückgabe:         QSelCntDCIDKey
'-------------------------------------------------------------------------------------'
Public Function QSelCntDCIDKey(ByVal lngDCID As Long) As String
    QSelCntDCIDKey = _
        "SELECT Count(DCID) AS NumRecs " & vbCrLf & _
        "FROM tblDB2DMCMDCTablesKey " & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True)
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelFindUser
'
' Auswahlabfrage:   UNION Abfrage der NTUserID in den Tabellen tblDB2DMCMFiles und
'                   tblDB2DMCMDeleteLog mit übereinstimmender Windows User ID.
'
' Parameter:        strWinUserID
'
' Rückgabe:         QSelFindUser
'-------------------------------------------------------------------------------------'
Public Function QSelFindUser(ByVal strWinUserID As String) As String
    QSelFindUser = _
        QSelTblFldOrderByFld("tblDB2DMCMFiles", _
                             "NTUserID", _
                             vbNullString) & vbCrLf & _
        NTUserIDEQstrWinUserID(strWinUserID, _
                               True, _
                               False, _
                               True, _
                               True)
    QSelFindUser = QSelFindUser & _
        "UNION " & vbCrLf & _
        QSelTblFldOrderByFld("tblDB2DMCMDeleteLog", _
                             "NTUserID", _
                             vbNullString) & vbCrLf & _
        NTUserIDEQstrWinUserID(strWinUserID, _
                               True, _
                               False, _
                               False, _
                               False)
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QInsJCLTables
'
' Anfügeabfrage:    Umgebung.Tabelle in die Tabelle tblJCLTables mit übereinstimmender
'                   DB2 Umgebung (strDB2Env) anfügen.
'
' Parameter:        strDB2Env
'
' Rückgabe:         QInsJCLTables
'-------------------------------------------------------------------------------------'
Public Function QInsJCLTables(ByVal strDB2Env As String) As String
    QInsJCLTables = _
        "INSERT INTO tblJCLTables ( UmgebTabelle ) " & vbCrLf & _
        "SELECT DISTINCT '" & strDB2Env & "' & " & "'.' & " & vbCrLf & _
        "Mid(UmgebTabelle,InStr(1,UmgebTabelle,'.')+1, " & vbCrLf & _
        "Len(UmgebTabelle)) AS UmgebTabelleConcat " & vbCrLf & _
        "FROM tblJCLLoadFileTableAttribs " & vbCrLf & _
        "ORDER BY '" & strDB2Env & "' & '.' & Mid(UmgebTabelle, " & _
        "InStr(1,UmgebTabelle,'.')+1,Len(UmgebTabelle))"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelJCLDelKey
'
' Auswahlabfrage:   Sätze der Tabelle tblDB2DMCMFiles mit übereinstimmender
'                   DCID auswählen.
'
' Parameter:        lngDCID
'
' Rückgabe:         QSelJCLDelKey
'-------------------------------------------------------------------------------------'
Public Function QSelJCLDelKey(ByVal lngDCID As Long) As String
    QSelJCLDelKey = _
        "SELECT tblDB2DMCMFiles.DCUmgebung, " & vbCrLf & _
        "tblDB2DMCMDCTablesKeyDelete.Tabelle, " & vbCrLf & _
        "tblDB2DMCMDCTablesKeyDelete.DB2KeyVal, " & vbCrLf & _
        "tblDB2DMCMDCTablesKeyDelete.DCID " & vbCrLf & _
        "FROM tblDB2DMCMFiles " & vbCrLf & _
        "INNER JOIN tblDB2DMCMDCTablesKeyDelete " & vbCrLf & _
        "ON tblDB2DMCMFiles.DCID = tblDB2DMCMDCTablesKeyDelete.DCID " & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True, "tblDB2DMCMDCTablesKeyDelete")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelCreatorName
'
' Auswahlabfrage:   CREATOR und NAME der Tabelle strTable, bei welchen strField den
'                   Feldinhalt strFieldVal besitzt, auswählen.
'                   Falls boolOrderBy = True ist, wird nach dem Feld NAME aufsteigend
'                   sortiert.
'
' Parameter:        strTable
'                   strField
'                   strFieldVal
'                   boolOrderBy
'
' Rückgabe:         QSelCreatorName
'-------------------------------------------------------------------------------------'
Public Function QSelCreatorName(ByVal strTable As String, _
                                ByVal strField As String, _
                                ByVal strFieldVal As String, _
                                ByVal boolOrderBy As Boolean) As String
    QSelCreatorName = _
        "SELECT CREATOR, NAME " & vbCrLf & _
        "FROM " & strTable & modPublDecl.gconSpace & vbCrLf & _
        "WHERE " & strField & " Like '" & strFieldVal & "'"
    If boolOrderBy = True Then
        QSelCreatorName = QSelCreatorName & modPublDecl.gconSpace & vbCrLf & _
            "ORDER BY NAME"
    End If
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelTableAttribCompare
'
' Auswahlabfrage:   Ermittelt mittels UNION Abfrage der Tabellen tblSysIBMTableAttribs
'                   und tblJCLLoadFileTableAttribs die Anzahl der Nichtübereinstimmenden
'                   Attribute.
'
' Parameter:        strUmgebTabelle
'
' Rückgabe:         QSelTableAttribCompare
'-------------------------------------------------------------------------------------'
Public Function QSelTableAttribCompare(ByVal strUmgebTabelle As String) As String
    QSelTableAttribCompare = _
        "SELECT tblSysIBMTableAttribs.Attribut " & vbCrLf & _
        "FROM tblSysIBMTableAttribs " & vbCrLf & _
        "WHERE tblSysIBMTableAttribs.Attribut " & vbCrLf & _
        "Not In (SELECT tblJCLLoadFileTableAttribs.Attribut " & vbCrLf & _
        "FROM tblJCLLoadFileTableAttribs) " & vbCrLf
    QSelTableAttribCompare = QSelTableAttribCompare & _
        "UNION " & vbCrLf & _
        "SELECT tblJCLLoadFileTableAttribs.Attribut " & vbCrLf & _
        "FROM tblJCLLoadFileTableAttribs " & vbCrLf & _
        "WHERE tblJCLLoadFileTableAttribs.Attribut " & vbCrLf & _
        "Not In (SELECT tblSysIBMTableAttribs.Attribut " & vbCrLf & _
        "FROM tblSysIBMTableAttribs) " & vbCrLf & _
        "AND tblJCLLoadFileTableAttribs.UmgebTabelle Like '" & strUmgebTabelle & "'"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelEnvTablesAttribs
'
' Auswahlabfrage:   Alle Sätze der Tabelle modPublDecl.gconAccIBMSysCols mit
'                   übereinstimmendem TBCREATOR und TBNAME auswählen.
'
' Parameter:        strDB2Env
'                   strTable
'
' Rückgabe:         QSelEnvTablesAttribs
'-------------------------------------------------------------------------------------'
Public Function QSelEnvTablesAttribs(ByVal strDB2Env As String, _
                                     ByVal strTable As String) As String
    QSelEnvTablesAttribs = _
        "SELECT NAME AS Attribut, TBNAME " & vbCrLf & _
        "FROM " & modPublDecl.gconAccIBMSysCols & modPublDecl.gconSpace & vbCrLf & _
        "WHERE Trim(TBCREATOR) Like '" & strDB2Env & "' " & vbCrLf & _
        "AND Trim(TBNAME) Like '" & strTable & "' " & vbCrLf & _
        "ORDER BY COLNO"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDistTBNAME
'
' Auswahlabfrage:   Eindeutigen Tabellennamen der Tabelle modPublDecl.gconAccIBMSysCols
'                   mit übereinstimmender Umgebung (strDB2EnvFrom) oder optional
'                   übereinstimmender Umgebung (strDB2EnvTo), gesteuert durch boolOr,
'                   auswählen.
'
' Parameter:        boolOr
'                   strDB2EnvFrom
'                   strDB2EnvTo         (Optional)
'
' Rückgabe:         QSelDistTBNAME
'-------------------------------------------------------------------------------------'
Public Function QSelDistTBNAME(ByVal boolOr As Boolean, _
                               ByVal strDB2EnvFrom As String, _
                               Optional ByVal strDB2EnvTo As String) As String
    QSelDistTBNAME = _
        "SELECT DISTINCT TBNAME " & vbCrLf & _
        "FROM " & modPublDecl.gconAccIBMSysCols & modPublDecl.gconSpace & vbCrLf & _
        "WHERE Trim(TBCREATOR) Like '" & strDB2EnvFrom & "' "
    If boolOr = True Then
        QSelDistTBNAME = QSelDistTBNAME & vbCrLf & _
            "OR Trim(TBCREATOR) Like '" & strDB2EnvTo & "'"
    End If
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelCntSysIBMAttribs
'
' Auswahlabfrage:   Anzahl Sätze der Tabelle modPublDecl.gconAccIBMSysCols mit
'                   übereinstimmendem TBCREATOR und TBNAME ermitteln.
'
' Parameter:        strDB2Env
'                   strTable
'
' Rückgabe:         QSelCntSysIBMAttribs
'-------------------------------------------------------------------------------------'
Public Function QSelCntSysIBMAttribs(ByVal strDB2Env As String, _
                                     ByVal strTable As String) As String
    QSelCntSysIBMAttribs = _
        "SELECT Count(NAME) AS NumRecs " & vbCrLf & _
        "FROM " & modPublDecl.gconAccIBMSysCols & modPublDecl.gconSpace & vbCrLf & _
        "HAVING Trim(TBCREATOR) Like '" & strDB2Env & "' " & vbCrLf & _
        "AND Trim(TBNAME) Like '" & strTable & "'"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelSysCreatsColsNames
'
' Auswahlabfrage:   Alle Sätze der Tabelle modPublDecl.gconAccIBMSysCols mit überein-
'                   stimmendem TBCREATOR und TBNAME auswählen.
'
' Parameter:        strDB2Env
'                   strTable
'
' Rückgabe:         QSelSysCreatsColsNames
'-------------------------------------------------------------------------------------'
Public Function QSelSysCreatsColsNames(ByVal strDB2Env As String, _
                                       ByVal strTable As String) As String
    QSelSysCreatsColsNames = _
        "SELECT NAME, TBNAME " & vbCrLf & _
        "FROM " & modPublDecl.gconAccIBMSysCols & modPublDecl.gconSpace & vbCrLf & _
        "WHERE Trim(TBCREATOR) Like '" & strDB2Env & "' " & vbCrLf & _
        "AND Trim(TBNAME) Like '" & strTable & "' " & vbCrLf & _
        "ORDER BY NAME"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelHostIdDB2DMFiles
'
' Auswahlabfrage:   Ermittelt die Daten für den Bericht modPublDecl.gconRepDC.
'
' Parameter:        strWorkGroup
'                   strNTUserID
'
' Rückgabe:         QSelHostIdDB2DMFiles
'-------------------------------------------------------------------------------------'
Public Function QSelHostIdDB2DMFiles(ByVal strWorkGroup As String, _
                                     ByVal strNTUserID As String) As String
    QSelHostIdDB2DMFiles = _
        "SELECT tblDB2DMCMFiles.*, tblDB2DMCMUnloadLog.EntladenOK " & vbCrLf & _
        "FROM tblDB2DMUserGroup  " & vbCrLf & _
        "INNER JOIN (tblDB2DMUserProfile  " & vbCrLf & _
        "INNER JOIN (tblDB2DMCMFiles  " & vbCrLf & _
        "LEFT JOIN tblDB2DMCMUnloadLog  " & vbCrLf & _
        "ON tblDB2DMCMFiles.EntladeDateTime = tblDB2DMCMUnloadLog.EntladeDateTime)  " & vbCrLf & _
        "ON tblDB2DMUserProfile.NTUserID = tblDB2DMCMFiles.NTUserID)  " & vbCrLf & _
        "ON tblDB2DMUserGroup.ProfileGroup = tblDB2DMUserProfile.ProfileGroup " & vbCrLf & _
        "WHERE tblDB2DMCMFiles.NTUserID Like '" & strNTUserID & "' " & vbCrLf & _
        "AND tblDB2DMUserProfile.ProfileGroup Like '" & strWorkGroup & "'"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDB2DMFilesTablesDCID
'
' Auswahlabfrage:   Alle Tabellen der Tabelle tblDB2DMCMFiles mit übereinstimmender
'                   DCID auswählen.
'
' Parameter:        lngDCID
'
' Rückgabe:         QSelDB2DMFilesTablesDCID
'-------------------------------------------------------------------------------------'
Public Function QSelDB2DMFilesTablesDCID(ByVal lngDCID As Long) As String
    QSelDB2DMFilesTablesDCID = _
        "SELECT DCID, " & vbCrLf & _
        "Mid(CreatorName,InStr(1,CreatorName,'.')+1," & vbCrLf & _
        "Len(CreatorName)) AS Name, " & vbCrLf & _
        "Mid(CreatorName,1,InStr(1,CreatorName,'.')-1) AS Creator " & vbCrLf & _
        "FROM tblDB2DMCMDCTables " & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True) & _
        "ORDER BY Mid(CreatorName,InStr(1,CreatorName,'.')+1,Len(CreatorName))"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelCorrTblFldNotDefault
'
' Auswahlabfrage:   Sätze der Tabelle strTable bei übereinstimmendem/nicht
'                   übereinstimmendem strField und strFieldVal, gesteuert durch
'                   boolDefault, boolNot und boolOrderBy, auswählen.
'
' Parameter:        strTable
'                   strField
'                   strFieldVal
'                   boolNot
'                   boolDefault
'                   boolOrderBy
'
' Rückgabe:         QSelCorrTblFldNotDefault
'-------------------------------------------------------------------------------------'
Public Function QSelCorrTblFldNotDefault(ByVal strTable As String, _
                                         ByVal strField As String, _
                                         ByVal strFieldVal As String, _
                                         ByVal boolNot As Boolean, _
                                         ByVal boolDefault As Boolean, _
                                         ByVal boolOrderBy As Boolean) As String
    QSelCorrTblFldNotDefault = _
        QSelDelTable(strTable, _
                     False) & modPublDecl.gconSpace
    If boolDefault = True Then
        QSelCorrTblFldNotDefault = QSelCorrTblFldNotDefault & vbCrLf & _
            "WHERE Default=True " & vbCrLf & _
            "AND " & strField & modPublDecl.gconSpace & _
            NotOrNull(boolNot) & "Like '" & strFieldVal & "' "
    ElseIf boolDefault = False Then
        QSelCorrTblFldNotDefault = QSelCorrTblFldNotDefault & vbCrLf & _
            "WHERE " & strField & modPublDecl.gconSpace & _
            NotOrNull(boolNot) & "Like '" & strFieldVal & "' "
    End If
    If boolOrderBy = True Then
        QSelCorrTblFldNotDefault = QSelCorrTblFldNotDefault & vbCrLf & _
            "ORDER BY " & strField
    End If
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QUpdDB2EnvCfg
'
' Aktualisierungs-
' abfrage:          Falls DB2Env der Tabelle tblDB2EnvCfg nicht als CREATOR der Tabelle
'                   tblDB2Tables vorhanden ist, das Feld EnvAvailable der Tabelle
'                   tblDB2EnvCfg auf False setzen.
'
' Parameter:        boolNot
'                   boolEnvAvailable
'                   boolWhere
'
' Rückgabe:         QUpdDB2EnvCfg
'-------------------------------------------------------------------------------------'
Public Function QUpdDB2EnvCfg(ByVal boolNot As Boolean, _
                              ByVal boolEnvAvailable As Boolean, _
                              ByVal boolWhere As Boolean) As String
    Dim strAvailable                As String
    strAvailable = IIf(boolEnvAvailable = True, "True", "False")
    QUpdDB2EnvCfg = _
        "UPDATE tblDB2EnvCfg " & vbCrLf & _
        "SET tblDB2EnvCfg.EnvAvailable = " & strAvailable
    If boolWhere = True Then
        QUpdDB2EnvCfg = QUpdDB2EnvCfg & vbCrLf & _
            " WHERE tblDB2EnvCfg.DB2Env " & _
            NotOrNull(boolNot) & "In (SELECT DISTINCT CREATOR FROM tblDB2Tables)"
    End If
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDB2EnvCfg
'
' Auswahlabfrage:   Sätze der Tabelle tblDB2EnvCfg bei übereinstimmender DB2 Umgebung
'                   (DB2Env), gesteuert durch boolEnvUsageOK, auswählen.
'
' Parameter:        strDB2Env
'                   boolEnvUsageOK
'
' Rückgabe:         QSelDB2EnvCfg
'-------------------------------------------------------------------------------------'
Public Function QSelDB2EnvCfg(ByVal strDB2Env As String, _
                              ByVal boolEnvUsageOK As Boolean) As String
    QSelDB2EnvCfg = _
        "SELECT DB2Env, EnvAvailable, EnvUsageOK, EnvUsed " & vbCrLf & _
        "FROM tblDB2EnvCfg " & vbCrLf & _
        "WHERE Trim(DB2Env) Like '" & strDB2Env & "' "
    If boolEnvUsageOK = True Then
        QSelDB2EnvCfg = QSelDB2EnvCfg & vbCrLf & _
            "AND EnvUsageOK=True"
    End If
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelTblFldDefault
'
' Auswahlabfrage:   Aus der Tabelle strTable das Feld strField und das Feld Default
'                   (Parameter: boolDefault) auslesen.
'
' Parameter:        strTable
'                   strField
'                   boolDefault
'
' Rückgabe:         QSelTblFldDefault
'-------------------------------------------------------------------------------------'
Public Function QSelTblFldDefault(ByVal strTable As String, _
                                  ByVal strField As String, _
                                  ByVal boolDefault As Boolean) As String
    QSelTblFldDefault = _
        "SELECT " & strField & modPublDecl.gconSpace & vbCrLf & _
        "FROM " & strTable & " WHERE Default=" & CInt(boolDefault)
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDistDB2TableName
'
' Auswahlabfrage:   Eindeutigen DB2 Tabellennamen mit übereinstimmendem TYPE und
'                   CREATOR auslesen.
'
' Parameter:        strDB2Env
'
' Rückgabe:         QSelDistDB2TableName
'-------------------------------------------------------------------------------------'
Public Function QSelDistDB2TableName(ByVal strDB2Env As String) As String
    QSelDistDB2TableName = _
        "SELECT DISTINCT tblDB2Tables.NAME " & vbCrLf & _
        "FROM tblDB2Type " & vbCrLf & _
        "INNER JOIN tblDB2Tables " & vbCrLf & _
        "ON tblDB2Type.DB2Type = tblDB2Tables.TYPE " & vbCrLf & _
        "WHERE Trim(tblDB2Tables.CREATOR) Like '" & Trim(strDB2Env) & "' " & vbCrLf & _
        "AND tblDB2Type.Default=True"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelKeyField
'
' Auswahlabfrage:   Schlüsselfeld der Tabelle strTable der DB2 Umgebung strDB2Env
'                   auswählen.
'
' Parameter:        strDB2Env
'                   strTable
'
' Rückgabe:         QSelKeyField
'-------------------------------------------------------------------------------------'
Public Function QSelKeyField(ByVal strDB2Env As String, _
                             ByVal strTable As String) As String
    QSelKeyField = _
        "SELECT NAME AS Attribut, COLTYPE AS Datentyp, LENGTH AS Feldgroesse " & vbCrLf & _
        "FROM " & modPublDecl.gconAccIBMSysCols & modPublDecl.gconSpace & vbCrLf & _
        "WHERE Trim(TBCREATOR) Like '" & Trim(strDB2Env) & "' " & vbCrLf & _
        "AND Trim(TBNAME) Like '" & Trim(strTable) & "' " & vbCrLf & _
        "AND COLTYPE In ('CHAR','DECIMAL','FLOAT','INTEGER','SMALLINT') " & vbCrLf & _
        "AND LENGTH<=20 " & vbCrLf & _
        "ORDER BY NAME"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDistDelDCID
'
' Auswahlabfrage:   Eindeutige DelDCID mit übereinstimmender DCID der Tabelle
'                   tblDB2DMCMDCTablesKeyDelete und UNION '(Alle)' auswählen.
'
' Parameter:        strDelDCID
'
' Rückgabe:         QSelDistDelDCID
'-------------------------------------------------------------------------------------'
Public Function QSelDistDelDCID(ByVal strDelDCID As String) As String
    QSelDistDelDCID = _
        "SELECT DISTINCT Format(DelDCID, '" & modPublDecl.gconlngDCIDFmt & _
        "') AS DCID " & vbCrLf & _
        "FROM tblDB2DMCMDCTablesKeyDelete " & vbCrLf & _
        "WHERE DCID Like '" & strDelDCID & "' " & vbCrLf
    QSelDistDelDCID = QSelDistDelDCID & _
        UnionSelAll(True, _
                    "DCID", _
                    "tblDB2DMCMDCTablesKeyDelete", _
                    "DCID")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDistDelKeyDB2KeyVal
'
' Auswahlabfrage:   Eindeutigen Schlüsselwert und UNION '(Alle)' auswählen.
'
' Parameter:        lngDCID
'                   strDelDCID
'                   strDelTabelle
'
' Rückgabe:         QSelDistDelKeyDB2KeyVal
'-------------------------------------------------------------------------------------'
Public Function QSelDistDelKeyDB2KeyVal(ByVal lngDCID As Long, _
                                        ByVal strDelDCID As String, _
                                        ByVal strDelTabelle As String) As String
    QSelDistDelKeyDB2KeyVal = _
        "SELECT DISTINCT DB2KeyVal AS KeyVal " & vbCrLf & _
        "FROM tblDB2DMCMDCTablesKeyDelete " & vbCrLf & _
        DCIDEQlngDCID(lngDCID, True) & _
        "AND Format(DelDCID, '" & modPublDecl.gconlngDCIDFmt & "') Like '" & _
        strDelDCID & "' " & vbCrLf & _
        "AND Tabelle Like '" & strDelTabelle & "' " & vbCrLf
    QSelDistDelKeyDB2KeyVal = QSelDistDelKeyDB2KeyVal & _
        UnionSelAll(True, _
                    "KeyVal", _
                    "tblDB2DMCMDCTablesKeyDelete", _
                    "KeyVal")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDCIDDelDCID
'
' Auswahlabfrage:   Alle Datensätze der Tabelle strDetailTable mit übereinstimmendem
'                   strField in der strMasterTable auswählen.
'
' Parameter:        strMasterTable
'                   strDetailTable
'                   strField
'                   lngDCID
'
' Rückgabe:         QSelDCIDDelDCID
'-------------------------------------------------------------------------------------'
Public Function QSelDCIDDelDCID(ByVal strMasterTable As String, _
                                ByVal strDetailTable As String, _
                                ByVal strField As String, _
                                ByVal lngDCID As Long) As String
    QSelDCIDDelDCID = _
        "SELECT " & strDetailTable & modPublDecl.gconFullStop & strField & ", " & _
        strDetailTable & ".CreatorName " & vbCrLf & _
        "FROM " & strDetailTable & modPublDecl.gconSpace & vbCrLf & _
        "INNER JOIN " & strMasterTable & modPublDecl.gconSpace & vbCrLf & _
        "ON " & strMasterTable & modPublDecl.gconFullStop & strField & "=" & _
        strDetailTable & modPublDecl.gconFullStop & strField & modPublDecl.gconSpace & vbCrLf & _
        "WHERE " & strMasterTable & modPublDecl.gconFullStop & strField & "=" & lngDCID
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QInsDB2Env
'
' Anfügeabfrage:    Fehlende DB2 Umgebung aus Tabelle tblDB2Tables an die Tabelle
'                   tblDB2EnvCfg anfügen.
'
' Parameter:        Ohne
'
' Rückgabe:         QInsDB2Env
'-------------------------------------------------------------------------------------'
Public Function QInsDB2Env() As String
    QInsDB2Env = _
        "INSERT INTO tblDB2EnvCfg ( DB2Env ) " & vbCrLf & _
        "SELECT DISTINCT tblDB2Tables.CREATOR " & vbCrLf & _
        "FROM tblDB2Tables " & vbCrLf & _
        "WHERE tblDB2Tables.CREATOR " & vbCrLf & _
        "Not In (SELECT DISTINCT DB2Env FROM tblDB2EnvCfg)"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelCorrUmgebTabelle
'
' Auswahlabfrage:   Übereinstimmende/nicht übereinstimmende Umgebung.Tabelle(n),
'                   gesteuert durch boolNot, ermitteln.
'
' Parameter:        boolNot
'
' Rückgabe:         QSelCorrUmgebTabelle
'-------------------------------------------------------------------------------------'
Public Function QSelCorrUmgebTabelle(ByVal boolNot As Boolean)
    QSelCorrUmgebTabelle = _
        "SELECT DISTINCT UmgebTabelle " & vbCrLf & _
        "FROM tblJCLLoadFileTableAttribs " & vbCrLf & _
        "WHERE UmgebTabelle " & vbCrLf & _
        IIf(boolNot = True, "Not ", vbNullString) & _
        "In (SELECT DISTINCT UmgebTabelle From tblSYSIBMTableAttribs)"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelTableAttribs
'
' Auswahlabfrage:   Fehlende Übereinstimmung(en) der Attribute Umgebung.Tabelle des/der
'                   Load Files (Tabelle tblJCLLoadFileTableAttribs) und der DB2 Umgebung
'                   und DB2 Tabelle (Tabelle tblSysIBMTableAttribs) ermitteln.
'
' Parameter:        strDB2EnvTable
'
' Rückgabe:         QSelTableAttribs
'-------------------------------------------------------------------------------------'
Public Function QSelTableAttribs(ByVal strDB2EnvTable As String) As String
    QSelTableAttribs = _
        "SELECT UmgebTabelle, Attribut " & vbCrLf & _
        "FROM tblSysIBMTableAttribs " & vbCrLf & _
        "WHERE UmgebTabelle Like '" & strDB2EnvTable & "' " & vbCrLf & _
        "AND Attribut " & vbCrLf & _
        "Not In (SELECT Attribut From tblJCLLoadFileTableAttribs " & vbCrLf & _
        "WHERE UmgebTabelle Like '" & strDB2EnvTable & "') " & vbCrLf
    QSelTableAttribs = QSelTableAttribs & _
        "UNION " & vbCrLf & _
        "SELECT UmgebTabelle, Attribut " & vbCrLf & _
        "FROM tblJCLLoadFileTableAttribs " & vbCrLf & _
        "WHERE UmgebTabelle Like '" & strDB2EnvTable & "' " & vbCrLf & _
        "AND Attribut " & vbCrLf & _
        "Not In (SELECT Attribut From tblSysIBMTableAttribs " & vbCrLf & _
        "WHERE UmgebTabelle Like '" & strDB2EnvTable & "')"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDistTeam
'
' Auswahlabfrage:   UNION Abfrage zur Auswahl der Arbeitsgruppe.
'
' Parameter:        Ohne
'
' Rückgabe:         QSelDistTeam
'-------------------------------------------------------------------------------------'
Public Function QSelDistTeam() As String
    QSelDistTeam = _
        "SELECT DISTINCT ProfileGroup " & vbCrLf & _
        "FROM tblDB2DMUserProfile " & vbCrLf & _
        "INNER JOIN tblDB2DMLogonInfo " & vbCrLf & _
        "ON tblDB2DMUserProfile.NTUserID = tblDB2DMLogonInfo.NTUserID " & vbCrLf
    QSelDistTeam = QSelDistTeam & _
        UnionSelAll(False, _
                    vbNullString, _
                    "tblDB2DMUserProfile", _
                    "ProfileGroup")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelHistory
'
' Auswahlabfrage:   UNION Abfrage zur Auswahl der Historie der erfolgreichen Entlade-,
'                   Lade- und Löschvorgänge aktuell verwendeter Data Collections und
'                   DB2 Umgebungen.
'
' Parameter:        strWorkGroup
'                   strWinUserID
'                   strDB2Env
'                   dateFrom
'                   dateTo
'
' Rückgabe:         QSelHistory
'-------------------------------------------------------------------------------------'
Public Function QSelHistory(ByVal strWorkGroup As String, _
                            ByVal strWinUserID As String, _
                            ByVal strDB2Env As String, _
                            ByVal dateFrom As Date, _
                            ByVal dateTo As Date) As String
    QSelHistory = _
        "SELECT tblDB2DMCMFiles.DCUmgebung AS DB2Env, tblDB2DMCMUnloadLog.NTUserID,  " & vbCrLf & _
        "tblDB2DMUserProfile.ProfileGroup, " & vbCrLf & _
        "tblDB2DMCMUnloadLog.EntladeDateTime AS JobRunDateTime, JCLTime, " & vbCrLf & _
        "'Unload' AS JobType, " & vbCrLf & _
        "Format(tblDB2DMCMFiles.DCID,'" & modPublDecl.gconlngDCIDFmt & _
        "') AS LoadUnloadDCID " & vbCrLf & _
        "FROM tblDB2DMUserProfile " & vbCrLf & _
        "INNER JOIN (tblDB2DMCMFiles " & vbCrLf & _
        "INNER JOIN tblDB2DMCMUnloadLog " & vbCrLf & _
        "ON tblDB2DMCMFiles.DCID = tblDB2DMCMUnloadLog.DCID) " & vbCrLf & _
        "ON tblDB2DMUserProfile.NTUserID = tblDB2DMCMFiles.NTUserID " & vbCrLf & _
        "WHERE Format([tblDB2DMCMUnloadLog.EntladeDateTime],'" & _
        modPublDecl.gconEurDate & "')>=#" & Format(dateFrom, "Short Date") & "# " & vbCrLf & _
        "AND Format([tblDB2DMCMUnloadLog.EntladeDateTime],'" & _
        modPublDecl.gconEurDate & "')<=#" & Format(dateTo, "Short Date") & "# " & vbCrLf & _
        "AND tblDB2DMCMUnloadLog.EntladenOK=True " & vbCrLf & _
        "AND Trim([DCUmgebung]) Like '" & strDB2Env & "' " & vbCrLf & _
        "AND tblDB2DMUserProfile.ProfileGroup Like '" & strWorkGroup & "' " & vbCrLf & _
        NTUserIDEQstrWinUserID(strWinUserID, _
                               False, _
                               False, _
                               True, _
                               True, _
                               "tblDB2DMUserProfile")
    QSelHistory = QSelHistory & QAppendSelHistory(strWorkGroup, _
                                                  strWinUserID, _
                                                  strDB2Env, _
                                                  dateFrom, _
                                                  dateTo, _
                                                  "tblDB2DMCMLoadLog", _
                                                  "LadeUmgebung", _
                                                  "LadeDateTime", _
                                                  "LadenOK", _
                                                  "Load", _
                                                  "tblDB2DMCMLoadLog.DCID")
    QSelHistory = QSelHistory & QAppendSelHistory(strWorkGroup, _
                                                  strWinUserID, _
                                                  strDB2Env, _
                                                  dateFrom, _
                                                  dateTo, _
                                                  "tblDB2EnvClearLog", _
                                                  "Umgebung", _
                                                  "LoeschDateTime", _
                                                  "GeloeschtOK", _
                                                  "Clear", _
                                                  "''") & _
        "ORDER BY DB2Env, JobRunDateTime DESC"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QAppendSelHistory
'
' Auswahlabfrage:   Erweitert die UNION Abfrage QSelHistory um die übergebene Tabelle
'                   und die übergebenen Attribute.
'
' Parameter:        strWorkGroup
'                   strWinUserID
'                   strDB2Env
'                   dateFrom
'                   dateTo
'                   strTable1
'                   strField1
'                   strField2
'                   strField3
'                   strJobType
'                   strFormatTableField
'
' Rückgabe:         QAppendSelHistory
'-------------------------------------------------------------------------------------'
Private Function QAppendSelHistory(ByVal strWorkGroup As String, _
                                   ByVal strWinUserID As String, _
                                   ByVal strDB2Env As String, _
                                   ByVal dateFrom As Date, _
                                   ByVal dateTo As Date, _
                                   ByVal strTable1 As String, _
                                   ByVal strField1 As String, _
                                   ByVal strField2 As String, _
                                   ByVal strField3 As String, _
                                   ByVal strJobType As String, _
                                   ByVal strFormatTableField As String) As String
    QAppendSelHistory = _
        "UNION " & vbCrLf & _
        "SELECT " & strTable1 & "." & strField1 & " AS DB2Env, " & _
        strTable1 & ".NTUserID,  " & vbCrLf & _
        "tblDB2DMUserProfile.ProfileGroup, " & vbCrLf & _
        strTable1 & "." & strField2 & " AS JobRunDateTime, JCLTime, " & vbCrLf & _
        "'" & strJobType & "' AS JobType, " & vbCrLf & _
        "Format(" & strFormatTableField & ",'" & modPublDecl.gconlngDCIDFmt & _
        "') AS LoadUnloadDCID " & vbCrLf & _
        "FROM " & strTable1 & " " & vbCrLf & _
        "INNER JOIN tblDB2DMUserProfile " & vbCrLf & _
        "ON " & strTable1 & ".NTUserID = tblDB2DMUserProfile.NTUserID " & vbCrLf & _
        "WHERE Format([" & strTable1 & "." & strField2 & "],'" & _
        modPublDecl.gconEurDate & "')>=#" & Format(dateFrom, "Short Date") & "# " & vbCrLf & _
        "AND " & strTable1 & "." & strField3 & "=True " & vbCrLf & _
        "AND Format([" & strTable1 & "." & strField2 & "],'" & _
        modPublDecl.gconEurDate & "')<=#" & Format(dateTo, "Short Date") & "# " & vbCrLf & _
        "AND Trim([" & strField1 & "]) Like '" & strDB2Env & "' " & vbCrLf & _
        "AND tblDB2DMUserProfile.ProfileGroup Like '" & strWorkGroup & "' " & vbCrLf & _
        NTUserIDEQstrWinUserID(strWinUserID, _
                               False, _
                               False, _
                               True, _
                               True, _
                               "tblDB2DMUserProfile")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelWGDB2EnvUsed
'
' Auswahlabfrage:   Abfrage zur Auswahl der von der Arbeitsgruppe strWorkGroup
'                   verwendeten DB2 Umgebungen und UNION '(Alle)'.
'
' Parameter:        strWorkGroup
'                   strWinUserID
'                   strDB2Env
'
' Rückgabe:         QSelWGDB2EnvUsed
'-------------------------------------------------------------------------------------'
Public Function QSelWGDB2EnvUsed(ByVal strWorkGroup As String, _
                                 ByVal strWinUserID As String, _
                                 ByVal strDB2Env As String) As String
    QSelWGDB2EnvUsed = _
        "SELECT DISTINCT tblDB2DMCMFiles.DCUmgebung AS DB2Env " & vbCrLf & _
        "FROM tblDB2DMUserProfile " & vbCrLf & _
        "INNER JOIN (tblDB2DMCMFiles " & vbCrLf & _
        "INNER JOIN tblDB2DMCMUnloadLog " & vbCrLf & _
        "ON tblDB2DMCMFiles.DCID = tblDB2DMCMUnloadLog.DCID) " & vbCrLf & _
        "ON tblDB2DMUserProfile.NTUserID = tblDB2DMCMFiles.NTUserID " & vbCrLf & _
        "WHERE tblDB2DMUserProfile.ProfileGroup Like '" & strWorkGroup & "' " & vbCrLf & _
        "AND tblDB2DMCMUnloadLog.EntladenOK=True " & vbCrLf & _
        "AND Trim([DCUmgebung]) Like '" & strDB2Env & "' " & vbCrLf & _
        "AND Trim([tblDB2DMCMUnloadLog.NTUserID]) Like '" & strWinUserID & "' " & vbCrLf
    QSelWGDB2EnvUsed = QSelWGDB2EnvUsed & QAppendSelWGDB2EnvUsed(strWorkGroup, _
                                                                 strWinUserID, _
                                                                 strDB2Env, _
                                                                 "tblDB2DMCMLoadLog", _
                                                                 "LadeUmgebung", _
                                                                 "LadenOK")
    QSelWGDB2EnvUsed = QSelWGDB2EnvUsed & QAppendSelWGDB2EnvUsed(strWorkGroup, _
                                                                 strWinUserID, _
                                                                 strDB2Env, _
                                                                 "tblDB2EnvClearLog", _
                                                                 "Umgebung", _
                                                                 "GeloeschtOK") & _
        UnionSelAll(False, _
                    vbNullString, _
                    "tblDB2DMUserProfile", _
                    "DB2Env")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QAppendSelWGDB2EnvUsed
'
' Auswahlabfrage:   Erweiter die Abfrage QSelWGDB2EnvUsed um die übergebene Tabelle
'                   und die übergebenen Attribute.
'
' Parameter:        strWorkGroup
'                   strWinUserID
'                   strDB2Env
'                   strTable
'                   strField1
'                   strField2
'
' Rückgabe:         QAppendSelWGDB2EnvUsed
'-------------------------------------------------------------------------------------'
Private Function QAppendSelWGDB2EnvUsed(ByVal strWorkGroup As String, _
                                        ByVal strWinUserID As String, _
                                        ByVal strDB2Env As String, _
                                        ByVal strTable As String, _
                                        ByVal strField1 As String, _
                                        ByVal strField2 As String) As String
    QAppendSelWGDB2EnvUsed = _
        "UNION " & vbCrLf & _
        "SELECT DISTINCT " & strTable & "." & strField1 & " AS DB2Env " & vbCrLf & _
        "FROM " & strTable & " " & vbCrLf & _
        "INNER JOIN tblDB2DMUserProfile " & vbCrLf & _
        "ON " & strTable & ".NTUserID = tblDB2DMUserProfile.NTUserID " & vbCrLf & _
        "WHERE tblDB2DMUserProfile.ProfileGroup Like '" & strWorkGroup & "' " & vbCrLf & _
        "AND " & strTable & "." & strField2 & "=True " & vbCrLf & _
        "AND Trim([" & strField1 & "]) Like '" & strDB2Env & "' " & vbCrLf & _
        "AND Trim([" & strTable & ".NTUserID]) Like '" & strWinUserID & "' " & vbCrLf
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelMinMaxDate
'
' Auswahlabfrage:   Abfrage des kleinsten/größten Joblaufdatums der ausgewählten DB2
'                   Umgebung(en), gesteuert durch boolMin.
'
' Parameter:        strDB2Env
'                   strWinUserID
'                   strWorkGroup
'                   boolMin
'
' Rückgabe:         QSelMinMaxDate
'-------------------------------------------------------------------------------------'
Public Function QSelMinMaxDate(ByVal strDB2Env As String, _
                               ByVal strWinUserID As String, _
                               ByVal strWorkGroup As String, _
                               ByVal boolMin As Boolean) As String
    Dim strMinMax                   As String
    Dim strDescAsc                  As String
    strMinMax = IIf(boolMin = True, "Min", "Max")
    strDescAsc = IIf(boolMin = True, "ASC", "DESC")
    QSelMinMaxDate = _
        "SELECT TOP 1 " & vbCrLf & _
        "Format(" & strMinMax & "(tblDB2DMCMUnloadLog.EntladeDateTime),'" & _
        modPublDecl.gconEurDate & "') AS JobDate " & vbCrLf & _
        "FROM tblDB2DMUserProfile " & vbCrLf & _
        "INNER JOIN (tblDB2DMCMFiles " & vbCrLf & _
        "INNER JOIN tblDB2DMCMUnloadLog " & vbCrLf & _
        "ON tblDB2DMCMFiles.DCID = tblDB2DMCMUnloadLog.DCID) " & vbCrLf & _
        "ON (tblDB2DMCMUnloadLog.NTUserID = tblDB2DMUserProfile.NTUserID) " & vbCrLf & _
        "AND (tblDB2DMUserProfile.NTUserID = tblDB2DMCMFiles.NTUserID) " & vbCrLf & _
        "GROUP BY Trim([DCUmgebung]), 'Unload', tblDB2DMCMUnloadLog.EntladenOK, " & vbCrLf & _
        "tblDB2DMUserProfile.NTUserID , tblDB2DMUserProfile.ProfileGroup " & vbCrLf & _
        "HAVING Trim([DCUmgebung]) Like '" & strDB2Env & "' " & vbCrLf & _
        "AND tblDB2DMCMUnloadLog.EntladenOK=True " & vbCrLf & _
        NTUserIDEQstrWinUserID(strWinUserID, _
                               False, _
                               False, _
                               True, _
                               True, _
                               "tblDB2DMUserProfile") & _
        "AND tblDB2DMUserProfile.ProfileGroup Like '" & strWorkGroup & "' " & vbCrLf & _
        "ORDER BY " & strMinMax & "(tblDB2DMCMUnloadLog.EntladeDateTime) " & strDescAsc & vbCrLf
    QSelMinMaxDate = QSelMinMaxDate & QAppendSelMinMaxDate(strDB2Env, _
                                                           strWinUserID, _
                                                           strWorkGroup, _
                                                           strMinMax, _
                                                           strDescAsc, _
                                                           "tblDB2DMCMLoadLog", _
                                                           "LadeUmgebung", _
                                                           "LadenOK", _
                                                           "LadeDateTime", _
                                                           "Load")
    QSelMinMaxDate = QSelMinMaxDate & QAppendSelMinMaxDate(strDB2Env, _
                                                           strWinUserID, _
                                                           strWorkGroup, _
                                                           strMinMax, _
                                                           strDescAsc, _
                                                           "tblDB2EnvClearLog", _
                                                           "Umgebung", _
                                                           "GeloeschtOK", _
                                                           "LoeschDateTime", _
                                                           "Clear") & _
        "ORDER BY JobDate " & strDescAsc
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QAppendSelMinMaxDate
'
' Auswahlabfrage:   Erweitert die Abfrage QSelMinMaxDate um die übergebene Tabelle
'                   und die übergebenen Attribute.
'
' Parameter:        strDB2Env
'                   strWinUserID
'                   strWorkGroup
'                   strMinMax
'                   strDescAsc
'                   strTable
'                   strField1
'                   strField2
'                   strField3
'                   strJobType
'
' Rückgabe:         QAppendSelMinMaxDate
'-------------------------------------------------------------------------------------'
Private Function QAppendSelMinMaxDate(ByVal strDB2Env As String, _
                                      ByVal strWinUserID As String, _
                                      ByVal strWorkGroup As String, _
                                      ByVal strMinMax As String, _
                                      ByVal strDescAsc As String, _
                                      ByVal strTable As String, _
                                      ByVal strField1 As String, _
                                      ByVal strField2 As String, _
                                      ByVal strField3 As String, _
                                      ByVal strJobType As String) As String
    QAppendSelMinMaxDate = _
        "UNION " & vbCrLf & _
        "(SELECT TOP 1 " & vbCrLf & _
        "Format(" & strMinMax & "(" & strTable & "." & strField3 & "),'" & _
        modPublDecl.gconEurDate & "') AS JobDate " & vbCrLf & _
        "FROM " & strTable & " " & vbCrLf & _
        "INNER JOIN tblDB2DMUserProfile " & vbCrLf & _
        "ON " & strTable & ".NTUserID = tblDB2DMUserProfile.NTUserID " & vbCrLf & _
        "GROUP BY Trim([" & strField1 & "]), '" & strJobType & "', " & _
        strTable & "." & strField2 & ", " & vbCrLf & _
        "tblDB2DMUserProfile.NTUserID , tblDB2DMUserProfile.ProfileGroup " & vbCrLf & _
        "HAVING Trim([" & strField1 & "]) Like '" & strDB2Env & "' " & vbCrLf & _
        "AND " & strTable & "." & strField2 & "=True " & vbCrLf & _
        NTUserIDEQstrWinUserID(strWinUserID, _
                               False, _
                               False, _
                               True, _
                               True, _
                               "tblDB2DMUserProfile") & _
        "AND tblDB2DMUserProfile.ProfileGroup Like '" & strWorkGroup & "' " & vbCrLf & _
        "ORDER BY " & strMinMax & "(" & strTable & "." & strField3 & ") " & strDescAsc & ")" & vbCrLf
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelWorkGroupUsers
'
' Auswahlabfrage:   Ermittelt alle Bearbeiter/innen der Arbeitsgruppe strWorkGroup,
'                   welche mindestens einen erfolgreichen Job ausgeführt haben.
'
' Parameter:        strDB2Env
'                   strWorkGroup
'                   dateFrom
'                   dateTo
'
' Rückgabe:         QSelWorkGroupUsers
'-------------------------------------------------------------------------------------'
Public Function QSelWorkGroupUsers(ByVal strDB2Env As String, _
                                   ByVal strWorkGroup As String, _
                                   ByVal dateFrom As Date, _
                                   ByVal dateTo As Date) As String
    QSelWorkGroupUsers = QSelWorkGroupUsers & _
        "SELECT DISTINCT tblDB2DMCMUnloadLog.NTUserID " & vbCrLf & _
        "FROM tblDB2DMUserGroup " & vbCrLf & _
        "INNER JOIN (tblDB2DMCMFiles " & vbCrLf & _
        "INNER JOIN (tblDB2DMUserProfile " & vbCrLf & _
        "INNER JOIN tblDB2DMCMUnloadLog " & vbCrLf & _
        "ON tblDB2DMUserProfile.NTUserID = tblDB2DMCMUnloadLog.NTUserID) " & vbCrLf & _
        "ON tblDB2DMCMFiles.DCID = tblDB2DMCMUnloadLog.DCID) " & vbCrLf & _
        "ON tblDB2DMUserGroup.ProfileGroup = tblDB2DMUserProfile.ProfileGroup " & vbCrLf & _
        "WHERE (((tblDB2DMCMUnloadLog.NTUserID) " & _
        "In (SELECT NTUserID FROM tblDB2DMUserProfile " & _
        "WHERE ProfileGroup Like '" & strWorkGroup & "')) " & vbCrLf & _
        "AND ((tblDB2DMCMUnloadLog.EntladeDateTime)>=#" & Format(dateFrom, "Short Date") & "#)) " & _
        "OR (((tblDB2DMCMUnloadLog.EntladeDateTime)<=#" & Format(dateTo, "Short Date") & "#) " & vbCrLf & _
        "AND ((tblDB2DMUserProfile.ProfileGroup) Like '" & strWorkGroup & "') " & vbCrLf & _
        "AND ((Trim([DCUmgebung])) Like '" & strDB2Env & "')) " & vbCrLf
    QSelWorkGroupUsers = QSelWorkGroupUsers & QAppendSelWorkGroupUsers(strDB2Env, _
                                                                       strWorkGroup, _
                                                                       dateFrom, _
                                                                       dateTo, _
                                                                       "tblDB2DMCMLoadLog", _
                                                                       "LadeDateTime", _
                                                                       "LadeUmgebung")
    QSelWorkGroupUsers = QSelWorkGroupUsers & QAppendSelWorkGroupUsers(strDB2Env, _
                                                                       strWorkGroup, _
                                                                       dateFrom, _
                                                                       dateTo, _
                                                                       "tblDB2EnvClearLog", _
                                                                       "LoeschDateTime", _
                                                                       "Umgebung") & _
        UnionSelAll(False, _
                    vbNullString, _
                    "tblDB2DMCMFiles", _
                    "NTUserID")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelWorkGroupUsers
'
' Auswahlabfrage:   Erweitert die UNION Abfrage QSelWorkGroupUsers um die übergebene
'                   Tabelle und die übergebenen Attribute.
'
' Parameter:        strDB2Env
'                   strWorkGroup
'                   dateFrom
'                   dateTo
'                   strTable
'                   strField1
'                   strField2
'
' Rückgabe:         QSelWorkGroupUsers
'-------------------------------------------------------------------------------------'
Private Function QAppendSelWorkGroupUsers(ByVal strDB2Env As String, _
                                          ByVal strWorkGroup As String, _
                                          ByVal dateFrom As Date, _
                                          ByVal dateTo As Date, _
                                          ByVal strTable As String, _
                                          ByVal strField1 As String, _
                                          ByVal strField2 As String) As String
    QAppendSelWorkGroupUsers = _
        "UNION " & vbCrLf & _
        "SELECT DISTINCT " & strTable & ".NTUserID " & vbCrLf & _
        "FROM tblDB2DMUserGroup " & vbCrLf & _
        "INNER JOIN (tblDB2DMUserProfile " & vbCrLf & _
        "INNER JOIN " & strTable & " " & vbCrLf & _
        "ON tblDB2DMUserProfile.NTUserID = " & strTable & ".NTUserID) " & vbCrLf & _
        "ON tblDB2DMUserGroup.ProfileGroup = tblDB2DMUserProfile.ProfileGroup " & vbCrLf & _
        "WHERE (((tblDB2DMUserProfile.ProfileGroup) Like '" & strWorkGroup & "') " & vbCrLf & _
        "AND ((" & strTable & "." & strField1 & ")>=#" & Format(dateFrom, "Short Date") & "#)) " & _
        "OR (" & strTable & "." & strField1 & ")<=#" & Format(dateTo, "Short Date") & "# " & vbCrLf & _
        "AND " & strTable & "." & strField2 & " Like '" & strDB2Env & "' " & vbCrLf
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelWorkGroups
'
' Auswahlabfrage:   Ermittelt alle Arbeitsgruppen, welche mindestens einen erfolgreichen
'                   Job ausgeführt haben.
'
' Parameter:        dateFrom
'                   dateTo
'
' Rückgabe:         QSelWorkGroups
'-------------------------------------------------------------------------------------'
Public Function QSelWorkGroups(ByVal dateFrom As Date, _
                               ByVal dateTo As Date) As String
    QSelWorkGroups = _
        "SELECT DISTINCT tblDB2DMUserProfile.ProfileGroup AS WorkGroup " & vbCrLf & _
        "FROM tblDB2DMCMFiles " & vbCrLf & _
        "INNER JOIN (tblDB2DMUserProfile " & vbCrLf & _
        "INNER JOIN tblDB2DMCMUnloadLog " & vbCrLf & _
        "ON tblDB2DMUserProfile.NTUserID = tblDB2DMCMUnloadLog.NTUserID) " & vbCrLf & _
        "ON (tblDB2DMUserProfile.NTUserID = tblDB2DMCMFiles.NTUserID) " & vbCrLf & _
        "AND (tblDB2DMCMFiles.DCID = tblDB2DMCMUnloadLog.DCID) " & vbCrLf & _
        "WHERE Format([tblDB2DMCMUnloadLog.EntladeDateTime],'" & _
        modPublDecl.gconEurDate & "')>=#" & Format(dateFrom, "Short Date") & "# " & vbCrLf & _
        "AND Format([tblDB2DMCMUnloadLog.EntladeDateTime],'" & _
        modPublDecl.gconEurDate & "')<=#" & Format(dateTo, "Short Date") & "# " & vbCrLf
    QSelWorkGroups = QSelWorkGroups & QAppendSelWorkGroups(dateFrom, _
                                                           dateTo, _
                                                           "tblDB2DMCMLoadLog", _
                                                           "LadeDateTime")
    QSelWorkGroups = QSelWorkGroups & QAppendSelWorkGroups(dateFrom, _
                                                           dateTo, _
                                                           "tblDB2EnvClearLog", _
                                                           "LoeschDateTime") & _
        UnionSelAll(True, _
                    "WorkGroup", _
                    "tblDB2DMUserProfile", _
                    "WorkGroup")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QAppendSelWorkGroups
'
' Auswahlabfrage:   Erweitert die Abfrage QSelWorkGroups um die übergebene Tabelle und
'                   das übergebene Attribut.
'
' Parameter:        dateFrom
'                   dateTo
'                   strTable
'                   strField
'
' Rückgabe:         QAppendSelWorkGroups
'-------------------------------------------------------------------------------------'
Private Function QAppendSelWorkGroups(ByVal dateFrom As Date, _
                                      ByVal dateTo As Date, _
                                      ByVal strTable As String, _
                                      ByVal strField As String) As String
    QAppendSelWorkGroups = _
        "UNION " & vbCrLf & _
        "SELECT DISTINCT tblDB2DMUserProfile.ProfileGroup AS WorkGroup " & vbCrLf & _
        "FROM " & strTable & " " & vbCrLf & _
        "INNER JOIN tblDB2DMUserProfile " & vbCrLf & _
        "ON " & strTable & ".NTUserID = tblDB2DMUserProfile.NTUserID " & vbCrLf & _
        "WHERE Format([" & strTable & "." & strField & "],'" & _
        modPublDecl.gconEurDate & "')>=#" & Format(dateFrom, "Short Date") & "# " & vbCrLf & _
        "AND Format([" & strTable & "." & strField & "],'" & _
        modPublDecl.gconEurDate & "')<=#" & Format(dateTo, "Short Date") & "# " & vbCrLf
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelLoadUnloadLog
'
' Auswahlabfrage:   Ermittelt die Daten für den Bericht modPublDecl.gconRepUL (UNLOAD)
'                   bzw. modPublDecl.gconRepLL (LOAD).
'
' Parameter:        strParentTable
'                   strDetailTable
'                   strOrderByField1
'                   strOrderByField2
'                   boolOrderByField2IsParent
'
'
' Rückgabe:         QSelLoadUnloadLog
'-------------------------------------------------------------------------------------'
Public Function QSelLoadUnloadLog(ByVal strParentTable As String, _
                                  ByVal strDetailTable As String, _
                                  ByVal strOrderByField1 As String, _
                                  ByVal strOrderByField2 As String, _
                                  ByVal boolOrderByField2IsParent As Boolean) As String
    QSelLoadUnloadLog = _
        "SELECT tblDB2DMCMFiles.NTUserID AS ParentNTUserID, " & _
        "tblDB2DMCMFiles.DCID AS ParentDCID, " & vbCrLf & _
        "tblDB2DMCMFiles.DCUmgebung, tblDB2DMCMFiles.KeySaved, " & vbCrLf & _
        strDetailTable & ".* " & vbCrLf & _
        "FROM " & strParentTable & modPublDecl.gconSpace & vbCrLf & _
        "INNER JOIN " & strDetailTable & modPublDecl.gconSpace & vbCrLf & _
        "ON " & strParentTable & ".DCID = " & strDetailTable & ".DCID " & vbCrLf & _
        "ORDER BY " & strParentTable & modPublDecl.gconFullStop & strOrderByField1 & ", " & _
        IIf(boolOrderByField2IsParent = True, strParentTable & modPublDecl.gconFullStop & _
                                              strOrderByField2, _
                                              strDetailTable & modPublDecl.gconFullStop & _
                                              strOrderByField2)
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDCDLWorkGroup
'
' Auswahlabfrage:   Datenherkunft des Steuerelements cboDCWorkGroup bzw. cboDLWorkGroup
'                   des Formulars modPublDecl.gconFrmRP festlegen.
'
' Parameter:        strTable1
'                   strTable2
'
' Rückgabe:         QSelDCDLWorkGroup
'-------------------------------------------------------------------------------------'
Public Function QSelDCDLWorkGroup(ByVal strTable1 As String, _
                                  ByVal strTable2 As String) As String
    QSelDCDLWorkGroup = _
        "SELECT DISTINCT tblDB2DMUserGroup.ProfileGroup " & vbCrLf & _
        "FROM tblDB2DMUserGroup " & vbCrLf & _
        "INNER JOIN (" & strTable1 & modPublDecl.gconSpace & vbCrLf & _
        "INNER JOIN " & strTable2 & modPublDecl.gconSpace & vbCrLf & _
        "ON " & strTable1 & ".NTUserID = " & strTable2 & ".NTUserID) " & vbCrLf & _
        "ON tblDB2DMUserGroup.ProfileGroup = tblDB2DMUserProfile.ProfileGroup " & vbCrLf & _
        UnionSelAll(False, _
                    "WorkGroup", _
                    "tblDB2DMUserGroup", _
                    "ProfileGroup")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelDCDLUser
'
' Auswahlabfrage:   Datenherkunft des Steuerelements cboDCUser bzw. cboDLUser des
'                   Formulars modPublDecl.gconFrmRP festlegen.
'
' Parameter:        strWorkGroup
'                   strTable1
'                   strTable2
'                   strTable3
'
' Rückgabe:         QSelDCDLUser
'-------------------------------------------------------------------------------------'
Public Function QSelDCDLUser(ByVal strWorkGroup As String, _
                             ByVal strTable1 As String, _
                             ByVal strTable2 As String, _
                             ByVal strTable3 As String) As String
    QSelDCDLUser = _
        "SELECT DISTINCT " & strTable1 & ".NTUserID " & vbCrLf & _
        "FROM tblDB2DMUserGroup " & vbCrLf & _
        "INNER JOIN (" & strTable2 & modPublDecl.gconSpace & vbCrLf & _
        "INNER JOIN " & strTable3 & modPublDecl.gconSpace & vbCrLf & _
        "ON " & strTable2 & ".NTUserID = " & strTable3 & ".NTUserID) " & vbCrLf & _
        "ON tblDB2DMUserGroup.ProfileGroup = tblDB2DMUserProfile.ProfileGroup " & vbCrLf & _
        "WHERE tblDB2DMUserProfile.ProfileGroup Like '" & strWorkGroup & "' " & vbCrLf & _
        UnionSelAll(False, _
                    "NTUserID", _
                    "tblDB2DMCMFiles", _
                    "NTUserID")
End Function
'-------------------------------------------------------------------------------------'
' Funktion:     UnionSelAll
'
' Beschreibung: Erweitert eine SQL Abfrage um den UNION Befehl zur Auswahl von '(Alle)'.
'
' Parameter:    boolAs
'               strAsRetVal
'               strTable
'               strOrderByAttrib
'
' Rückgabe:     UnionSelAll
'-------------------------------------------------------------------------------------'
Private Function UnionSelAll(ByVal boolAs As Boolean, _
                             ByVal strAsRetVal As String, _
                             ByVal strTable As String, _
                             ByVal strOrderByAttrib As String) As String
    UnionSelAll = _
        "UNION " & vbCrLf & _
        "SELECT '" & modPublDecl.gconSelectAll & "'" & _
        IIf(boolAs = True, " AS " & strAsRetVal, vbNullString) & _
            modPublDecl.gconSpace & vbCrLf & _
        "FROM " & strTable & modPublDecl.gconSpace & vbCrLf & _
        "ORDER BY " & strOrderByAttrib
End Function
'-------------------------------------------------------------------------------------'
' Funktion:     DelOrSel
'
' Beschreibung: Abhängig vom Inhalt der Variablen boolDelete, wird die Zeichenfolge
'               'DELETE ' oder 'SELECT ' zurückgegeben.
'
' Parameter:    boolDelete
'
' Rückgabe:     DelOrSel
'-------------------------------------------------------------------------------------'
Private Function DelOrSel(ByVal boolDelete As Boolean) As String
    DelOrSel = IIf(boolDelete = True, "DELETE", "SELECT") & modPublDecl.gconSpace
End Function
'-------------------------------------------------------------------------------------'
' Funktion:     NotOrNull
'
' Beschreibung: Abhängig vom Inhalt der Variablen boolNot, wird die Zeichenfolge 'Not '
'               oder ein vbNullString zurückgegeben.
'
' Parameter:    boolNot
'
' Rückgabe:     NotOrNull
'-------------------------------------------------------------------------------------'
Private Function NotOrNull(ByVal boolNot As Boolean) As String
    NotOrNull = IIf(boolNot = True, "Not ", vbNullString)
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelUserJobsRunning
'
' Auswahlabfrage:   Wählt den aktiven Job der angemeldeten Bearbeiterin/des angemeldeten
'                   Bearbeiters. Der Time Out ist noch nicht erreicht.
'
' Parameter:        Ohne
'
' Rückgabe:         QSelUserJobsRunning
'-------------------------------------------------------------------------------------'
Public Function QSelUserJobsRunning() As String
    QSelUserJobsRunning = _
        QSelDelTable("tblJCLJobsRunning", _
                     False) & modPublDecl.gconSpace & vbCrLf & _
        "WHERE JobInitiated<=Now() " & vbCrLf & _
        "AND JobTimeOut>=Now() " & vbCrLf & _
        "AND NTUserID='" & modPublDecl.gstrWinUserID & "'"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:         QSelAllJCLTablesExistingInSysIBM
'
' Auswahlabfrage:   Gibt keinen Datensatz zurück, falls alle Quelltabellen nicht in der
'                   Tabelle tblSYSIBMTableAttribs vorhanden sind.
'
' Parameter:        Ohne
'
' Rückgabe:         QSelAllJCLTablesExistingInSysIBM
'-------------------------------------------------------------------------------------'
Public Function QSelAllJCLTablesExistingInSysIBM() As String
    QSelAllJCLTablesExistingInSysIBM = _
        "SELECT DISTINCT UmgebTabelle " & vbCrLf & _
        "FROM tblJCLLoadFileTableAttribs " & vbCrLf & _
        "WHERE UmgebTabelle In " & vbCrLf & _
        "(SELECT DISTINCT UmgebTabelle From tblSYSIBMTableAttribs) " & vbCrLf & _
        "ORDER BY UmgebTabelle"
End Function
'-------------------------------------------------------------------------------------'
' Funktion:     DCIDEQlngDCID
'
' Beschreibung: Erweitert Abfragen um die übergebene DCID.
'
' Parameter:    lngDCID
'               boolWhere
'               strTable                (Optional)
'
' Rückgabe:     DCIDEQlngDCID
'-------------------------------------------------------------------------------------'
Private Function DCIDEQlngDCID(ByVal lngDCID As Long, _
                               ByVal boolWhere As Boolean, _
                               Optional ByVal strTable As String) As String
    DCIDEQlngDCID = _
        WhereTable(boolWhere, _
                   strTable) & "DCID=" & lngDCID & modPublDecl.gconSpace & vbCrLf
End Function
'-------------------------------------------------------------------------------------'
' Funktion:     QSelDB2ClientIniPath
'
' Beschreibung: Gibt den Pfad zur DB2 Client Ini Datei zurück.
'
' Parameter:    strWinUserID
'
' Rückgabe:     QSelDB2ClientIniPath
'-------------------------------------------------------------------------------------'
Public Function QSelDB2ClientIniPath(ByVal strWinUserID As String) As String
    QSelDB2ClientIniPath = _
        QSelTblFldOrderByFld("tblDB2DMUserProfile", _
                             "DB2ClientIniPath", _
                             vbNullString) & vbCrLf & _
        NTUserIDEQstrWinUserID(modPublDecl.gstrWinUserID, _
                               True, _
                               False, _
                               False, _
                               False)
End Function
'-------------------------------------------------------------------------------------'
' Funktion:     NTUserIDEQstrWinUserID
'
' Beschreibung: Erweitert Abfragen um die übergebene Windows User ID.
'
' Parameter:    strWinUserID
'               boolWhere
'               boolNot
'               boolDelimiter
'               boolCrLf
'               strTable                (Optional)
'
' Rückgabe:     NTUserIDEQstrWinUserID
'-------------------------------------------------------------------------------------'
Private Function NTUserIDEQstrWinUserID(ByVal strWinUserID As String, _
                                        ByVal boolWhere As Boolean, _
                                        ByVal boolNot As Boolean, _
                                        ByVal boolDelimiter As Boolean, _
                                        ByVal boolCrLf As Boolean, _
                                        Optional ByVal strTable As String) As String
    NTUserIDEQstrWinUserID = _
        WhereTable(boolWhere, _
                   strTable) & "NTUserID" & _
        IIf(boolNot = True, " Not", vbNullString) & " Like '" & strWinUserID & "'" & _
        IIf(boolDelimiter = True, modPublDecl.gconSpace, vbNullString) & _
        IIf(boolCrLf = True, vbCrLf, vbNullString)
End Function
'-------------------------------------------------------------------------------------'
' Funktion:     WhereTable
'
' Beschreibung: Erweitert Abfragen um 'WHERE ' oder 'AND ' und, falls strTable ungleich
'               vbNullString ist, die übergebene Tabelle.
'
' Parameter:    boolWhere
'               strTable
'
' Rückgabe:     WhereTable
'-------------------------------------------------------------------------------------'
Private Function WhereTable(ByVal boolWhere As Boolean, _
                            ByVal strTable As String) As String
    WhereTable = _
        IIf(boolWhere = True, "WHERE", "AND") & modPublDecl.gconSpace & _
        IIf(Not (strTable = vbNullString), strTable & modPublDecl.gconFullStop, vbNullString)
End Function