Skip to main content
Skip table of contents

TBeCbBORelationShips

TBeCbBORelationShips

Die Klasse TBeCbBORelationShips kapselt Eigenschaften und Funktionen für Verknüpfungen von Business-Objekten.

Funktionen und MethodenBeschreibung

CbAddRelationShip():N

Neue Verknüpfung zu einem Business-Objekt erstellen
Existiert die Verknüpfung bereits, so wird keine neue erstellt.
Rückgabe ist die ID der Verknüpfung.

EigenschafftBeschreibung

aDestBO:O

Business-Objekt, zu welchem die Verknüpfung erzeugt werden soll

aKind:N

Art der Verknüpfung

aType:N

Typ der Verknüpfung

CbAddRelationShipByDestID():N

Neue Verknüpfung zu einem Business-Objekt erstellen,
existiert die Verknüpfung bereits, so wird keine neue erstellt.
Rückgabe ist die ID der Verknüpfung

EigenschafftBeschreibung

aDestWorkArea:N

Workarea der Tabelle, zu welcher die Verknüpfung erzeugt werden soll

aDestID:N

ID der Tabelle, zu welcher die Verknüpfung erzeugt werden soll

aDestLocation:N

STANDORT der Tabelle, zu welcher die Verknüpfung erzeugt werden soll. Sofern diese Information technisch irrelevant ist, muss -1 übergeben werden.

aKind:N

Art der Verknüpfung

aType:N

Typ der Verknüpfung

CbDeleteRelationShip():L

Verknüpfung löschen

EigenschafftBeschreibung

aID:N

ID der Verknüpfung

CbGetRelationShipByID():O

Rückgabe ist ein TBeBORelationShip-Objekt, welche die Informationen der Verknüpfung enthält, das Objekt muss per DestroyObject() wieder zerstört werden.

EigenschafftBeschreibung

aID:N

ID der Verknüpfung

CbFindRelationShip():O

Nach einer bestimmten Verknüpfung suchen
Rückgabe ist ein TBeBORelationShip-Objekt oder NIL, falls keine Verknüpfung gefunden wurde, das Objekt muss per DestroyObject() wieder zerstört werden.

EigenschafftBeschreibung

aDestBO:O

Business-Objekt, zu welchem die Verknüpfung gesucht werden soll

aKind:N

Art der Verknüpfung (-1 = kann jede beliebige Art sein)

aType:N

Typ der Verknüpfung (-1 = kann jeder beliebiger Typ sein)

CbFindRelationShipByDestID():O

Nach einer bestimmten Verknüpfung suchen
Rückgabe ist ein TBeBORelationShip-Objekt oder NIL, falls keine Verknüpfung gefunden wurde, das Objekt muss per DestroyObject() wieder zerstört werden.

EigenschafftBeschreibung

aDestWorkArea:N

Workarea der Tabelle, zu welcher die Verknüpfung gesucht werden soll

aDestID:N

ID der Tabelle, zu welcher die Verknüpfung gesucht werden soll

aDestLocation:N

STANDORT der Tabelle, zu welcher die Verknüpfung gesucht werden soll

aKind:N

Art der Verknüpfung (-1 = kann jede beliebige Art sein)

aType:N

Typ der Verknüpfung (-1 = kann jeder beliebiger Typ sein)

CbFindAllRelationShips():O

Alle Verknüpfungen des Business-Objekts ermitteln (TBeCbBORelationShipList)

EigenschafftBeschreibung

aFilter:C

Optionale, zusätzliche ADS-konforme Filter-Bedingung für die DABVKN

aFindDirection:N

Verknüpfungs-Richtung, nach der gesucht werden soll

(default) rsfdSource

= Verknüpfung wird in Quelle gesucht

rsfdDestination

= Verknüpfung wird in Ziel gesucht

rsfdSourceAndDestination

= Verknüpfung wird in Quelle und Ziel gesucht
CbAddRelationShipBySourceAndDestID():NNeue Verknüpfung ohne Business-Objekt erstellen,
existiert die Verknüpfung bereits, so wird keine neue erstellt.
Rückgabe ist die ID der Verknüpfung
EigenschafftBeschreibung
aSourceWorkArea:NWorkarea der Tabelle, zu welcher die Verknüpfung erzeugt werden soll
aSourceID:NID der Tabelle, zu welcher die Verknüpfung erzeugt werden soll
aSourceLocation:NSTANDORT der Tabelle, zu welcher die Verknüpfung erzeugt werden soll. Sofern diese Information technisch irrelevant ist, muss -1 übergeben werden.
aDestWorkArea:NWorkarea der Tabelle, zu welcher die Verknüpfung erzeugt werden soll
aDestID:NID der Tabelle, zu welcher die Verknüpfung erzeugt werden soll
aDestLocation:NSTANDORT der Tabelle, zu welcher die Verknüpfung erzeugt werden soll. Sofern diese Information technisch irrelevant ist, muss -1 übergeben werden.
aKind:NArt der Verknüpfung
aType:NTyp der Verknüpfung
CbFindRelationShipBySource():ONach einer bestimmten Verknüpfung suchen
Rückgabe ist ein TBeBORelationShip-Objekt oder NIL, falls keine Verknüpfung gefunden wurde, das Objekt muss per DestroyObject() wieder zerstört werden.
EigenschafftBeschreibung
aSourceWorkArea:NWorkarea der Tabelle, zu welcher die Verknüpfung erzeugt werden soll
aSourceID:NID der Tabelle, zu welcher die Verknüpfung erzeugt werden soll
aSourceLocation:NSTANDORT der Tabelle, zu welcher die Verknüpfung erzeugt werden soll. Sofern diese Information technisch irrelevant ist, muss -1 übergeben werden.
aDestWorkArea:NWorkarea der Tabelle, zu welcher die Verknüpfung erzeugt werden soll
aDestID:NID der Tabelle, zu welcher die Verknüpfung erzeugt werden soll
aDestLocation:NSTANDORT der Tabelle, zu welcher die Verknüpfung erzeugt werden soll. Sofern diese Information technisch irrelevant ist, muss -1 übergeben werden.
aKind:NArt der Verknüpfung
aType:NTyp der Verknüpfung
CbFindAllRelationShipsBySource():OAlle Verknüpfungen des Business-Objekts ermitteln (TBeCbBORelationShipList)
EigenschafftBeschreibung
aSourceWorkArea:NWorkarea der Tabelle, zu welcher die Verknüpfung erzeugt werden soll
aSourceID:NID der Tabelle, zu welcher die Verknüpfung erzeugt werden soll
aSourceLocation:NSTANDORT der Tabelle, zu welcher die Verknüpfung erzeugt werden soll. Sofern diese Information technisch irrelevant ist, muss -1 übergeben werden.
aFilter:COptionale, zusätzliche ADS-konforme Filter-Bedingung für die DABVKN
aFindDirection:NVerknüpfungs-Richtung, nach der gesucht werden soll
(default) rsfdSource= Verknüpfung wird in Quelle gesucht
rsfdDestination= Verknüpfung wird in Ziel gesucht
rsfdSourceAndDestination= Verknüpfung wird in Quelle und Ziel gesucht

Beispiel

CODE
//##############################################################################
//##############################################################################
// Beschreibung: Dokumentationsprogramm zum Erzeugen von Verknüpfungen
//##############################################################################
//##############################################################################
|
   m_oDM,

   // Business-Objekte
   m_oProjectBO, m_oDestProjectBO, m_oDestMemoBO, oRelationShip,
   oRelationList, oRelationShips,

   // Sonstige
   nSourcePrjID, m_nDestID1, m_nDestID2, m_nRelationID
|

//##############################################################################
//##############################################################################
// Funktionen
//##############################################################################
//##############################################################################

function WriteRelationship()
   writeln(
      'ID: ' + BeFormat(oRelationShip.CbID, '00000'),
      'DestID: ' + BeFormat(oRelationShip.CbDestID, '00000'),
      'SourceWorkarea: ' + BeFormat(oRelationShip.CbSourceWorkArea, '000'),
      'DestWorkarea: ' + BeFormat(oRelationShip.CbDestWorkArea, '000')
   ),
end,

//******************************************************************************
// Findet alle Verknüpfungen und schreibt dessen ID's in die Konsole
//******************************************************************************
function GetAllLinks()
| i |
   // Alle Verknüpfungen ermitteln und Ausgeben
   oRelationList := m_oProjectBO.CbRelationShips.CbFindAllRelationShips('', rsfdSource),
   startseq
      writeln(Str(oRelationList.CbCount()) + ' Verknüpfung(en) vorhanden'),
      for i := 1 to oRelationList.CbCount() do
         oRelationShip := oRelationList.CbItem(i),
         WriteRelationship(),
      next,
   always
      DestroyObject(oRelationList),
   stopseq,
end,

//******************************************************************************
// Löscht eine Verknüpfung
//******************************************************************************
function DeleteLink()
   // Verknüpfung suchen und löschen
   m_oDestMemoBO.CbGoToID(m_nDestID2),
   oRelationShip  := m_oProjectBO.CbRelationShips.CbFindRelationShip(m_oDestMemoBO, 0, 0),
   if not empty(oRelationShip) then
      startseq
         if m_oProjectBO.CbRelationShips.CbDeleteRelationShip(oRelationShip.CbID) then
            writeln('Verknüpfung ' + Str(oRelationShip.CbID) + ' gelöscht'),
         endif,
      always
         DestroyObject(oRelationShip),
      stopseq,
   endif,
end,

//******************************************************************************
// Erzeugen der Verknüpfungen
// @Result: null
//******************************************************************************
function CreateLinks()
   // Verknüpfungen erstellen
   m_oDestProjectBO.CbGoToID(m_nDestID1),
   m_nRelationID         := m_oProjectBO.CbRelationShips.CbAddRelationShip(m_oDestProjectBO, 0, 1),
   writeln('Projekt-Verknüpfung', m_nRelationID),

   m_nRelationID := m_oProjectBO.CbRelationShips.CbAddRelationShipByDestID(9, m_nDestID2, -1, 0, 0),
   oRelationShip := m_oProjectBO.CbRelationShips.CbGetRelationShipByID(m_nRelationID),
   writeln('Memo-Verknüpfung', oRelationShip.CbID),
end,

//******************************************************************************
// Erstellen des Memos das als Verknüpfung dienen soll
//******************************************************************************
function CreateLinkMemo()
   m_oDestMemoBO.WriteLastUsed := False,
   m_oDestMemoBO.CBInsertEmptyMemo(10, bcMemoLinkIDUser, val(c_usr), 0),
   m_oDestMemoBO.SubjectValue := 'Ich bin eine Memo Verknüpfung',
   m_oDestMemoBO.CBPost(),

   m_nDestID2 := m_oDestMemoBO.CbID,
   writeln('Memo-BO', m_nDestID2),
end,

//******************************************************************************
// Benötigte Business-Objekte erstellen
//******************************************************************************
function CreateBusinessObjects()
   m_oProjectBO               := CreateObject('TBeProjectBO', 'SRCPRJ', m_oDM),
   m_oDestProjectBO           := CreateObject('TBeProjectBO', 'DESTPRJ', m_oDM),
   // Pro DatenModul darf nur ein ProjectBO existieren deshalb wird hier nur
   // einmal ein CbDataModule zugewiesen
   m_oProjectBO.CbDataModule  := m_oDM,

   m_oDestMemoBO              := CreateObject('TBeMemoBO', 'LNKMEMO', m_oDM),
   m_oDestMemoBO.CbDataModule := m_oDM,

   oRelationShips := CreateObject('TBeCbBORelationShips', 'OHNEBO', m_oDM),
end,

//******************************************************************************
// Projekte erstellen
//******************************************************************************
function CreateProjects()
//| nSourcePrjID |
   startseq
      // Neues Projekt erstellen
      m_oProjectBO.CBInsert(),
      m_oProjectBO.CbDescription := 'Ich habe Verknüpfungen',
      m_oProjectBO.CbType        := 100,
      m_oProjectBO.CbStartDate   := Now(),
      m_oProjectBO.CBPost(),
      nSourcePrjID := m_oProjectBO.CbID,
      writeln('Projekt-BO SourceID', nSourcePrjID),

      // Neues Projekt das als Verknüpfung dient erstellen
      m_oProjectBO.CBInsert(),
      m_oProjectBO.CbDescription := 'Ich bin ein verknüpftes Projekt',
      m_oProjectBO.CbType        := 100,
      m_oProjectBO.CbStartDate   := Now(),
      m_oProjectBO.CBPost(),

      m_nDestID1 := m_oProjectBO.CbID,
      writeln('Projekt-BO DestinationID', m_nDestID1),

      m_oProjectBO.CbGoToID(nSourcePrjID),
   onerror
      SetError('Fehler beim Erstellen der Projekte' + crlf + GetErrorText()),
   stopseq,
end,

//******************************************************************************
// Erzeugen der Verknüpfungen ohne BO
// @Result: null
//******************************************************************************
function CreateLinksNoBO()
| nID, i |
   // Verknüpfungen erstellen
   nID := oRelationShips.CbAddRelationShipBySourceAndDestID(waDAB010, nSourcePrjID, -1, waDAB000, m_nDestID1, -1, -1, -1),
   writeln('ID ohne BO', nID),

   oRelationShip := oRelationShips.CbFindRelationShipBySource(waDAB010, nSourcePrjID, -1, waDAB000, m_nDestID1, -1, -1, -1),
   WriteRelationship(),

   oRelationList := oRelationShips.CbFindAllRelationShipsBySource(waDAB010, nSourcePrjID, -1, '', rsfdSource),
   startseq
      writeln(Str(oRelationList.CbCount()) + ' Verknüpfung(en) ohne BO vorhanden'),
      for i := 1 to oRelationList.CbCount() do
         oRelationShip := oRelationList.CbItem(i),
         WriteRelationship(),
      next,
   always
      DestroyObject(oRelationList),
   stopseq,
end,

//##############################################################################
//##############################################################################
// Hauptprogramm
//##############################################################################
//##############################################################################

m_oDM := CreateObject('TBeDBGet', 'VKNDOKUGET'),
startseq
   CreateBusinessObjects(), // Erstellen der benötigten Business-Objekte

   CreateProjects(),        // Erstellen der Projekte
   CreateLinkMemo(),        // Memo für die Verknüpfung erstellen

   CreateLinks(),           // Verknüpfungen erzeugen
   GetAllLinks(),           // ID's aller bestehenden Verknüpfungen in die Konsole schreiben

   CreateLinksNoBO(),       // Test für Verknüpfungen ohne BO
   
//   DeleteLink(),            // Löscht eine Verknüpfung
always
   DestroyObject(m_oDM),
stopseq,

Weitere Verknüpfungen


JavaScript errors detected

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

If this problem persists, please contact our support.