Skip to main content
Skip table of contents

TBeFieldChangeBO

TBeFieldChangeBO

Die Klasse TBeFieldChangeBO kapselt Eigenschaften und Funktionen zur Verwaltung von Feld-Änderungen.
Diese Feld-Änderungen werden in der DabAVG gespeichert.

Eigenschaften

EigenschaftBeschreibung

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)
1 - String
2 - ShortInt
3 - Integer
5 - Boolean
6 - Float
9 - Datum
10 - Zeit
11 - Datum/Zeit
16 - Memo

CbChangingMode:N

Modus (entspricht DABAVG:MODUS)
1 - Neuanlage des Datensatzes
2 - Bearbeitung des Datensatzes

CbFieldValue:U

Feldwert (entspricht DABAVG:WERT_)

Funktionen

FunktionParameterBeschreibung

CbInsertFieldChangeByBO

Feld-Änderung für ein BusinessObjekt anlegen




aBusinessObject:OBusinessObjekt für welche die Feld-Änderung erzeugt werden soll
aFieldName:CFeldname
aFieldDataType:NFeldtyp
aMode:NModus

CbInsertFieldChange

Feld-Änderung für einen Datensatz anlegen




aSourceTable:OTabelle für welche die Feld-Änderung erzeugt werden soll
aFieldName:CFeldname
aFieldDataType:NFeldtyp
aMode:NModus

Beispiel

CODE
//##############################################################################
//##############################################################################
// 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

CODE
//******************************************************************************
// 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,
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.