TBeFieldChangeBO
TBeFieldChangeBO
Die Klasse TBeFieldChangeBO kapselt Eigenschaften und Funktionen zur Verwaltung von Feld-Änderungen.
Diese Feld-Änderungen werden in der DabAVG gespeichert.
Eigenschaften
Eigenschaft | Beschreibung |
---|---|
CbSourceLocation:N | Standort des Datensatzes der Feld-Änderung (entspricht DABAVG:DS_STO) |
CbSourceWorkarea:N | WorkArea der Tabelle der Feld-Änderung (entspricht DABAVG:DS_WA) |
CbFieldName:C | Feldname (entspricht DABAVG:FELDNAME) |
CbFieldType:N | Feldtyp (entspricht DABAVG:FELDTYP) |
CbChangingMode:N | Modus (entspricht DABAVG:MODUS) |
CbFieldValue:U | Feldwert (entspricht DABAVG:WERT_) |
Funktionen
Funktion | Parameter | Beschreibung |
---|---|---|
CbInsertFieldChangeByBO Feld-Änderung für ein BusinessObjekt anlegen | aBusinessObject:O | BusinessObjekt für welche die Feld-Änderung erzeugt werden soll |
aFieldName:C | Feldname | |
aFieldDataType:N | Feldtyp | |
aMode:N | Modus | |
CbInsertFieldChange Feld-Änderung für einen Datensatz anlegen | aSourceTable:O | Tabelle für welche die Feld-Änderung erzeugt werden soll |
aFieldName:C | Feldname | |
aFieldDataType:N | Feldtyp | |
aMode:N | Modus |
Beispiel
//##############################################################################
//##############################################################################
// Beschreibung: TBeFieldChangeBO
// Feld-Änderungsverfolgung
//##############################################################################
//##############################################################################
| m_oFieldChangeBO, m_oDM |
//******************************************************************************
// Feld-Änderung für ein BO
//******************************************************************************
function FieldChangeByBO()
| oMemoBO |
oMemoBO := CreateObject('TBeMemoBO'),
startseq
// Neues Memo (Typ 10 = Notiz) beim aktuellen Benutzer anlegen
oMemoBO.WriteLastUsedUserID := c_usr,
oMemoBO.WriteLastUsed := True,
oMemoBO.CbInsertEmptyMemo(10, bcMemoLinkIDUser, val(c_usr), 0),
oMemoBO.SubjectValue := 'Test',
oMemoBO.MemoValue := 'Das ist eine Test Notiz',
oMemoBO.BringFwdDateValue := Date(),
oMemoBO.CbPost(),
m_oFieldChangeBO.CbInsertFieldChangeByBO(oMemoBO, 'BETREFF', 16, 1),
m_oFieldChangeBO.CbFieldValue := oMemoBO.SubjectValue,
m_oFieldChangeBO.CbPost(),
m_oFieldChangeBO.CbInsertFieldChangeByBO(oMemoBO, 'WV_DATUM', 9, 1),
m_oFieldChangeBO.CbFieldValue := oMemoBO.BringFwdDateValue,
m_oFieldChangeBO.CbPost(),
oMemoBO.CbEdit(),
oMemoBO.BringFwdDateValue := Date() - 1,
oMemoBO.CbPost(),
m_oFieldChangeBO.CbInsertFieldChangeByBO(oMemoBO, 'WV_DATUM', 9, 1),
m_oFieldChangeBO.CbFieldValue := oMemoBO.BringFwdDateValue,
m_oFieldChangeBO.CbPost(),
always
DestroyObject(oMemoBO),
stopseq,
end,
//******************************************************************************
// Feld-Änderung für einen Datensatz
//******************************************************************************
function FieldChangeByTable()
| oDab010 |
oDab010 := DbGetTable(m_oDM, waDab010),
startseq
DbStartTrans(m_oDM.AdsConnection),
startseq
DbEdit(oDab010),
oDab010:BEZ1 := oDab010:BEZ1 + ' (NEU)',
DbPost(oDab010),
m_oFieldChangeBO.CbInsertFieldChange(oDab010, 'BEZ1', 16, 1),
m_oFieldChangeBO.CbFieldValue := oDab010:BEZ1,
m_oFieldChangeBO.CbPost(),
DbCommit(m_oDM.AdsConnection),
onerror
DbRollback(m_oDM.AdsConnection),
stopseq,
always
DestroyObject(m_oDM.AdsConnection),
stopseq,
end,
//******************************************************************************
m_oDM := CreateObject('TBeDbGet'),
m_oFieldChangeBO := CreateObject('TBeFieldChangeBO'),
startseq
m_oFieldChangeBO.CbDataModule := m_oDM,
FieldChangeByBO(),
FieldChangeByTable(),
always
DestroyObject(m_oDM),
DestroyObject(m_oFieldChangeBO),
stopseq,
Weiteres Beispiel
//******************************************************************************
// Diese Funktion erstellt einen DabAVG-Eintrag für das Feld (cFieldname) in der
// übergeben Tabelle (oTable), mit dem Wert den das Feld zum Zeitpunkt des
// Auführens hat
// @Result: null
//******************************************************************************
function DabAVG_EintragErstellen(oOwner, oTable, cFieldname)
| oFieldchangeBO, oField, nFieldtype, nMode |
// Feldtyp ermitteln
oField := oTable.CbFieldByName(cFieldname),
SetErrorif(Empty(oField), 'Da angegeben Feld mit dem Namen "' + cFieldname + '" wurde nicht gefunden.'),
case ClassName(oField)
of 'TAdsStringField' :: nFieldtype := 1,
of 'TSmallintField' :: nFieldtype := 2,
of 'TIntegerField' :: nFieldtype := 3,
of 'TBooleanField' :: nFieldtype := 5,
of 'TFloatField' :: nFieldtype := 6,
of 'TDateField' :: nFieldtype := 9,
of 'TTimeField' :: nFieldtype := 10,
of 'TDateTimeField' :: nFieldtype := 11,
of 'TMemoField' :: nFieldtype := 16,
otherwise SetError('Das Feld <' + cFieldName + '> ist von der Klasse <' + ClassName(oField) + '> welche nicht von dieser Funktion unterstützt wird.'),
endcase,
// Änderung des Datensatzes sofern die Tabelle nicht im Insermodus ist - dann Neuanlage
nMode := iif(oTable.CbState = dsInsert, 1, 2),
// Object für den Eintrag finden oder anlegen
oFieldchangeBO := FindObject(oOwner, 'CREATEAVG_FUNC'),
if Empty(oFieldchangeBO) then
oFieldchangeBO := CreateObject('TBeFieldChangeBO', 'CREATEAVG_FUNC', oOwner),
endif,
// Eintrag erzeugen
oFieldchangeBO.CbInsertFieldChange(oTable, cFieldname, nFieldtype, nMode),
oFieldchangeBO.CbFieldValue := AsVariant(cFieldName, oTable),
oFieldChangeBO.CbPost(),
end,