Event "bei Aktualisierung Termin"
Event "bei Aktualisierung Termin"
Dieser Event wird aufgerufen, nachdem ein Termin (DabTRM: Terminkalender) gespeichert wurde.
Hierbei werden alle notwendigen Informationen für den Termin und dessen Besprechung bereitgestellt.
Der Event dient hauptsächlich zur Steuerung von individuellen Lese-Berechtigungen und dem Setzen des Info-Textes eines Termins.
Beispiel
CODE
|nEvtNo:P1, oDataMod:P2, oUpdInfo:P3|
// oDataMod: Datenmodul (in Transaktion, es dürfen keine Änderungen an den Tabellen erfolgen)
// oUpdInfo: Objekt bietet Information über den aktuellen Aktualisierungs-Prozess und
// dient zur Modifizierung einiger Felder
// MeetingID: (nur lesen) ID der Besprechung welche aktualisiert wird
// EventID : (nur lesen) ID des Termins welcher aktualisiert wird
// InfoText : (setzbar) Inhalt der in das Feld "INFOTEXT" der DabTRM (Terminkalender)
// geschrieben wird
// UseForAll: (setzbar) schaltet den Aufruf dieses Events für alle folgenden Termine
// der aktuellen Besprechung aus, hierbei werden die Informationen
// dieses Events für alle weiteren Besprechungs-Termine verwendet
//
// ReadRightFullManual,
// ReadRightInfoManual: (nur lesen) Lese-Berechtigung für das Feld "Voll-Zugriff" bzw. "Info-Zugriff"
// wurde manuell angepasst
// ReadRightFull,
// ReadRightInfo : (setzbar) vorberechneter Wert für alle User die "Voll-Zugriff" bzw. "Info-Zugriff"
// haben. z.b. '050/060/080'
// Dieser Wert kann gesetzt werden wird aber nochmals validiert,
// damit sichergestellt ist das alle Teilnehmer (falls keine vorhanden alle User)
// "Voll-Zugriff" besitzen.
//
// Zur Lese-Berechtigung:
// - Einträge können nie in beiden Feldern "Info" und "Voll" stehen
// - der Eintrag "000" bedeutet "alle Benutzer"
// - Einträge in "Info-Zugriff" schränken Einträge in "Voll-Zugriff" ein
// z.b. "Info-Zugriff" = '050/060'
// "Voll-Zugriff" = '000' -> alle Benutzer außer '050' und '060' haben "Voll-Zugriff"
//
// Rückgabe: keine
//******************************************************************************
// Die Matchcodes aller zu diesem Termin verknüpften Kunden als Komma-Liste ermitteln
//******************************************************************************
function CalcInfoText(nBesprechungsID)
| oSQLQuery, cSqlStr |
Result := '',
cSqlStr := SqlStr( SELECT DISTINCT DAB000.MATCHCODE
on DAB000.ID = DABTRV.ZIEL_ID
AND DABTRV.WORKAREA = 1 ),
// wichtig: SQL-Statement muss in Transkation des Datenmoduls laufen
oSQLQuery := CreateObject('TBeAdsQuery', 'TRM_INFOTEXT_QRY', oDataMod.AdsConnection),
startseq
oSQLQuery.Sql := cSqlStr,
oSQLQuery.Active := True,
DbGoTop(oSQLQuery),
while not eof(oSQLQuery) do
// Matchcodes mit Komma separiert auflisten
if not empty(oSQLQuery:MATCHCODE) then
if not empty(Result) then
Result += ', ',
endif,
Result += AllTrim(oSQLQuery:MATCHCODE),
endif,
DbSkip(1, oSQLQuery),
end,
always
DestroyObject(oSQLQuery),
stopseq,
end,
startseq
oUpdInfo.UseForAll := True,
oUpdInfo.ReadRightFull := oUpdInfo.ReadRightFull + '/100',
oUpdInfo.ReadRightInfo := oUpdInfo.ReadRightInfo + '/050',
oUpdInfo.InfoText := CalcInfoText(oUpdInfo.MeetingID),
onerror
MessageDlg('Fehler im Event ' + progName() + crlf + crlf + GetErrorText()),
raise(),
stopseq,
// Ergebnis: - der Event wird pro Besprechung nur 1 mal ausgelöst, die setzbaren Felder gelten für alle Termine der Besprechung
// - der User "100" hat immer Vollen-Zugriff auf alle Termine der Besprechung
// - der User "050" hat nur Info-Zugriff auf alle Termine der Besprechung
// (außer auf seine eigenen, dort hat er immer Vollen-Zugriff)
// - alle Termine der Besprechung haben im Info-Text eine Liste mit den Matchcodes
// der zugehörigen Kunden stehen