TIB_Event in AvERP.exe

Diskussionen über Anwenderwünsche und deren Sinn oder Unsinn für die Allgemeinheit

Moderator: SYNERPY

Antworten
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

TIB_Event in AvERP.exe

Beitrag von festus01 »

Hallo SynERPy Team,

wäre es möglich im nächsten Release der AvERP.EXE die TIB_Event-Komponente zu integrieren :?:

Ich habe das vorab schon mal gemacht und muss sagen, dass diese Komponente wesentlich besser dazu geeignet ist ein Formular zu aktualisieren als es mit der TTimer Komponente möglich ist.

Bild

Die Eigenschaft Events hat folgende Einträge:

Code: Alles auswählen

Orderwechsel
FreigabeQS
Wie immer ein Beispiel:

Ich habe eine Tabelle gebaut in der pro Produktionsmaschine jeweils der Ein- sowie der Ausbau der Aufträge eingegeben werden.

Bild

Im Insert- bzw. Update-Trigger wird jeweils ein Post_Event generiert.

Code: Alles auswählen

CREATE OR ALTER TRIGGER BHERSTELLUNG_AI0 FOR BHERSTELLUNG
ACTIVE AFTER INSERT POSITION 0
as
begin
  /* LETZTER STAND: 17.09.2008 06:42:52 BY KDP */
  /* Protokollieren, dass Aktion hier durchgelaufen ist */
  IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
  INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('BHERSTELLUNG_AI0');

  Post_Event 'Orderwechsel';

end
Der Insert Trigger.

Code: Alles auswählen

CREATE OR ALTER TRIGGER BHERSTELLUNG_AU10 FOR BHERSTELLUNG
ACTIVE AFTER UPDATE POSITION 10
as
begin
  /* LETZTER STAND: 17.09.2008 06:31:39 BY KDP */
  /* Protokollieren, dass Aktion hier durchgelaufen ist */
  IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
  INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('BHERSTELLUNG_AU10');

  IF (((old.EINBAUZEIT <> new.EINBAUZEIT) OR
     (old.AUSBAUZEIT <> new.AUSBAUZEIT)) OR
     ((old.AUSBAUZEIT is NULL) AND (new.AUSBAUZEIT is NOT NULL))) Then
  Post_Event 'Orderwechsel';
end
Der Update Trigger.

Code: Alles auswählen

CREATE OR ALTER TRIGGER BQSDATEN_AU10 FOR BQSDATEN
ACTIVE AFTER UPDATE POSITION 10
as
begin
  /* LETZTER STAND: 18.09.2008 08:20:36 BY KDP */
  /* Protokollieren, dass Aktion hier durchgelaufen ist */
  IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
  INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('BQSDATEN_AU10');

  IF ((old.DATUM_ELKONTROLLE is NULL) and (new.DATUM_ELKONTROLLE is not NULL))
  THEN Post_Event 'FreigabeQS';

end
Der Update Trigger zur Freigabe QS.

Eine andere Maske reagiert auf dieses Events, und die entsprechenden Aktionen werden ausgeführt.

Bild

Der Farbhintergund hat folgende Bedeutung:

Grün: Auftrag ist eingebaut, Freigabe QS ist erfolgt
Gelb: Auftrag ist eingebaut, Freigabe QS fehlt
Rot: Auftrag ist ausgebaut, aber noch kein neuer eingebaut

Das OnEventScript sieht so aus:

Code: Alles auswählen

Begin
  q_2.First;
  For X := 1 To q_2.RecordCount do Begin
    SuchQuery := 'Q_Maschine' + IntToStr(X); // Ergibt Q_Maschine1,Q_Maschine2 usw
    PanelMaschine := 'PANEL_Maschine' + IntToStr(X);
    A := Self.FindComponent(SuchQuery);
    P := Self.FindComponent(PanelMaschine);
    If A > 0 Then Begin
      A.Refresh;
      If P > 0 Then Begin
        Include(PROC0001); // Farbe des Panels schalten
      End;
    End;
    q_2.Next;
  End;
End;
Und das ist PROC0001:

Code: Alles auswählen

Begin
  M1 := A.FieldByName('AUSBAUZEIT');
  M2 := A.FieldByName('FREIGABEQS');
  If ((M1.IsNull) and (M2.IsNotNull)) Then P.Color := 65280; // Grün
  If ((M1.IsNull) and (M2.IsNull)) Then P.Color := 65535; // Gelb
  If ((M1.IsNotNull)) Then P.Color := 255; // Rot
End;
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
Antworten