FlowFact - Entwicklungstools

zurück

Function - AKT_Copy
Aktivitäten kopieren

Diese Funktion kopiert alle Aktivitäten, die in rsAkt enthalten sind. Sollen neben dem Projekt, alle Aktivitäten mit einem Objekt verknüpft werden, dann kann dieses in einer nachgeschalteten Schleife vor dem AKT_Update geschehen. Das hat den Vorteil, das z.B. nur bestimmte Aktivitäten mit einem Objekt verknüpft werden können. Wichtig: nach dem Aufruf von AKT_Copy muß der Rückgabewert noch an AKT_Update übergeben werden.
  Function AKT_Copy(ByVal rsAkt As ADODB.Recordset, Optional ByVal strUserDsn As String = "", Optional ByVal strProjekteDsn As String = "", Optional datStartDate As Date = 0, Optional datRefDate As Date = 0, Optional blnWochenende As Boolean = True, Optional blnFeiertag As Boolean = True) As ADODB.Recordset  
 


rsAkt: Alle Aktivitäten, die kopiert werden sollen
strUserDsn: wenn gesetzt, dann werden die neuen Aktivitäten in den Besitz von strUserDsn über.
strProjekteDsn: wenn gesetzt, dann werden die neuen Aktivitäten mit diesem Projekt verknüpft.
datStartDate: Startdatum
datRefDate: Referenzdatum
blnWochenende: True: Datumswert überspringt Wochenende bzw. Wochenenden werden nicht mitgezählt
blnFeiertag: True: Datumswert überspringt Feiertag; bzw. Feiertage werden nicht mitgezählt
Rückgabewert: Recordset mit den noch nicht gespeicherten Kopien. => AKT_Update


Public Function AKT_Copy(ByVal rsAkt As ADODB.Recordset, Optional ByVal strUserDsn As String = "", Optional ByVal strProjekteDsn As String = "", Optional datStartDate As Date = 0, Optional datRefDate As Date = 0, Optional blnWochenende As Boolean = True, Optional blnFeiertag As Boolean = True) As ADODB.Recordset

    Dim rsAktNew As ADODB.Recordset
    Dim strAktDsn As String
    Dim strAktNewDsn As String
    Dim strAktDsnList As String
    Dim strAktNewDsnList As String
    Dim p As Long

    '** Aktivitäten kopieren
    Set rsAktNew = oBase.FF_GetRecordset("SELECT * FROM Akt WHERE 1=2")
    While rsAkt.EOF = False
        rsAktNew.AddNew
        rsAktNew("DSN").value = oUtil.NewGUID()
        rsAktNew("Kennung").value = STD_GetField("Kennung_AKT") 'Hole Vorbelegung i.A. '#'

        '-- DSN's merken
        strAktDsn = rsAkt("Dsn")
        strAktNewDsn = rsAktNew("Dsn")

        '-- DSN-Liste erstellen
        strAktDsnList = strAktDsnList & "|" & strAktDsn
        strAktNewDsnList = strAktNewDsnList & "|" & strAktNewDsn

        '-- Felder kopieren - außer dsn, kennung
        oBase.Sql_CopyFields rsAkt, rsAktNew, "|DSN|KENNUNG|STAMP|"

        If strProjekteDsn <> "" Then
            rsAktNew("Projekte_Dsn") = strProjekteDsn
        End If

        If datStartDate <> 0 And datRefDate <> 0 Then
            rsAktNew("Datum_Bis") = oTools.MoveDate(rsAktNew("Datum_Bis"), datStartDate, datRefDate, blnWochenende, blnFeiertag)
            rsAktNew("Vorlage") = oTools.MoveDate(rsAktNew("Vorlage"), datStartDate, datRefDate, blnWochenende, blnFeiertag)
            rsAktNew("Alarm") = oTools.MoveDate(rsAktNew("Alarm"), datStartDate, datRefDate, blnWochenende, blnFeiertag)
            rsAktNew("Datum") = oTools.MoveDate(rsAktNew("Datum"), datStartDate, datRefDate, blnWochenende, blnFeiertag)
        End If
        If strUserDsn <> "" Then
            rsAktNew("NEU_BEN_DSN") = strUserDsn
            rsAktNew("ANGELEGT") = Now
            rsAktNew("ÄN_BEN_DSN") = strUserDsn
            rsAktNew("TOUCH") = Now
        End If

        '-- Merkmale, Blob und Details kopieren
        AKT_Merkmal_Copy strAktDsn, strAktNewDsn
        BLOB_Copy strAktDsn, strAktNewDsn
        AKT_Detail_Copy strAktDsn, strAktNewDsn

        rsAkt.MoveNext
    Wend

    '** Vorgang Aktivitäten verknüpfen
    If rsAktNew.AbsolutePosition <> adPosUnknown Then
        rsAktNew.MoveFirst
        strAktDsnList = strAktDsnList & "|"
        strAktNewDsnList = strAktNewDsnList & "|"
        While rsAktNew.EOF = False
            strAktDsn = oUtil.k(rsAktNew("Akt_Dsn"))
            If strAktDsn <> "" Then
                p = InStr(strAktDsnList, "|" & strAktDsn & "|")
                If p > 0 Then
                    strAktNewDsn = Mid(strAktNewDsnList, p + 1, Len(strAktDsn))
                    rsAktNew("Akt_Dsn") = strAktNewDsn
                End If
            End If
            rsAktNew.MoveNext
        Wend
        rsAktNew.MoveFirst
    End If

    Set AKT_Copy = rsAktNew
End Function