Logo Image Workflow+ Hilfe
Workflow+ Hilfe
Logo Image

PgSqlCheckReplication

 

Syntax

PgSqlCheckReplication("Verbindung:Tabelle", "WHERE clausel")
PgSqlCheckReplication("Verbindung:Tabelle", "WHERE clausel", TimeoutSeconds)

 

Beschreibung

Diese Funktion wartet, bis ein Datensatz nach einer Änderung oder Neuanlage in Büro+ in die PgSQL Datenbank abgeglichen wurde. Falls die Replikation nicht erfolgt, wird false zurückgegeben. Mittels der where Clausel werden die zu prüfenden Datensätze selektiert. Wenn die where Clausel auf mehrere Datensätze zutrifft, werden alle diese Einträge geprüft.

Diese Funktion kann verwendet werden, wenn ein einzelner Datesatz in Büro+ geändert oder hinzugefügt wurde und dieser dann im laufenden Skript für eine PgSQL Abfrage verwendet wird. Möglich ist auch eine Änderung auf mehreren Datensätzen und Prüfung in einer einzigen Abfrage, wie z.B. die Änderung von Vorgangspositionen.

Werden jedoch mehrere neue Datensätze in Büro+ hinzugefügt sollte die Replikation nicht mit PgSqlCheckReplication geprüft werden (ausser man prüft jeden Datensatz einzeln), da diese Funktion auch true zurückgibt, wenn noch nicht alle neuen Datensätze repliziert wurden. Dazu muss PgSqlCheckReplicationBP verwendet werden.

 

Parameter

Tabelle: Verbindungs- und Tabellenname in der PgSQL Datenbank, in der gesucht werden soll.

Where Clausel: Where Clausel gem. SQL für die Selektion der zu prüfenden Datensätze (ohne das where Schlüsselwort).

TimeoutSeconds: Timeout in Sekunden.

 

Beispiel 1

-- In diesem Beispiel wird der Preis eines Artikel geändert. Danach wird gewartet, bis dieser Artikel in die pgSQL Datenbank repliziert wurde.

Declare lArtNr as String
Declare lWhereClausel as String

Declare lTemp as String

 

lArtNr = "100001"
lWhereClausel = StringFormat("artnr = '{0}'", lArtNr)
if GetTable("Artikel", "Nr", "ArtNr", lArtNr) then
  Artikel.Vk0.Preis = Artikel.Vk0.Preis * 1.05
  UpdateTable("Artikel")
 
  if PgSqlCheckReplication("pgAlphacom:artikel", lWhereClausel, 30) then
    PgSqlGetTable("pgAlphacom:v_artikel", "select * from v_artikel where " + lWhereClausel)
    FetchFirst("pgAlphacom:v_artikel")
    lTemp = pgAlphacom:v_artikel.vk0_Preis
  EndIf
EndIf

 

Beispiel 2

-- Hier werden Änderungen an bestehenden Vorgangspositionen vorgenommen. Nach der Aktion wird gewartet, bis alle Vorgangspositionen in die PgSQL Datenbank abgeglichen wurden.

GetTable("VorgangPosition", "Nr", "BelegNr", "LS2025120001")
Loop("VorgangPosition")
  -- Änderungen an Posiitonen vornehmen
  -- ...
EndLoop

if PgSqlCheckReplication("pgBerg26:vorgangposition", "belegnr = 'LS2025120001'") then
  -- weitere Aktionen
EndIf