TIB_GRID Problematik in Schnellerfassungsmaske FRMV_BSAPQ

Allgemeine Diskussionen um die ERP Software AvERP

Moderator: SYNERPY

Antworten
Thomas Rogge
Beiträge: 159
Registriert: Mi Mär 04, 2009 10:45 am

TIB_GRID Problematik in Schnellerfassungsmaske FRMV_BSAPQ

Beitrag von Thomas Rogge »

Moinsen zusammen,

ich habe mir zur Preiskalkulation die o.a. Maske so angepasst, dass folgende TIB-Grids angezeigt werden (die blauen Felder sind Infos der Verknüpfungen):

Bild

Die Maske funktioniert soweit gut, aber ich habe ein Problem mit dem TIB-Grid BSAPGAF oben rechts:
wenn ich dort mit "+" einen Datensatz einfüge, oder innerhalb des Grids eine Änderung vornehme, dann erkennt der Designer das nicht im "frmAfterInsert"-Script. Dort steht:

Code: Alles auswählen

Begin
  // letzter Stand 23.10.2009 AS 
  wo := 'AfterInsert';

	if (q_3.state = dssInsert) then
  begin
		// Aus irgendeinem Grund wird nach dem Insert der Hauptartikel als Material eingetragen
		M := q_3.FieldByName('BSA_ID_ARTNR');
		M.AsInteger := 0;
		q_3.RelationIdFeld('BSA_ID_ARTNR');
  end;  
  
  if (q_1.state = dssInsert) then
    Include(PROC0003);
    
  if (q_2.state = dssInsert) then
    Include(PROC0002);     
    
  if (q_3.state = dssInsert) then
		Include(PROC0004);
	
	if (q_8.state = dssInsert) then 
		Include(PROC0023);
		
	if (q_9.state = dssInsert) then
	  Include(PROC0024);
End;
Der q_9 wird nicht erkannt, obwohl ein Datensatz eingefügt wird.
Dasselbe Problem habe ich beim editieren innerhalb des TIB-Grids.
Es greift ja nach der Aktualisierung das "frmAfterPost" Script im Designer, hier der Code:

Code: Alles auswählen

Begin
  if ((q_2.PostedState = dssInsert) or (q_2.PostedState = dssEdit) or (q_2.PostedState = dssDelete)) then
  begin
    Messagebox('Q2 Insert or Edit',self.caption,0);
    iLocateID := AsInteger(q_2.FieldByName('ID'));
    q_2.refresh();
    q_1.refresh();    
    q_2.Locate('ID',IntToStr(iLocateID));
    include(PROC0024);
  end;  
  
  if ((q_3.PostedState = dssInsert) or (q_3.PostedState = dssEdit)) then
  begin      
    iLocateID := AsInteger(q_3.FieldByName('ID'));
    q_3.refresh();
    q_1.refresh();
    CB_BSA_ARTBEZ.Text := '';   
    CB_BSA_ARTBEZ2.Text := ''; 
    q_3.Locate('ID',IntToStr(iLocateID));
    include(PROC0024);
  end; 
	
	if ((q_9.PostedState = dssInsert) or (q_9.PostedState = dssEdit)) then
  begin 
		Messagebox('Q9 Insert or Edit',self.caption,0);     
    iLocateID := AsInteger(q_9.FieldByName('ID'));
    q_9.refresh();
    q_1.refresh();
    q_9.Locate('ID',IntToStr(iLocateID)); 
    include(PROC0024);
  end;
  
 	if ((q_8.PostedState = dssInsert) or (q_8.PostedState = dssEdit)) then
  begin      
    iLocateID := AsInteger(q_8.FieldByName('ID'));
    q_8.refresh();
    q_1.refresh();
    q_8.Locate('ID',IntToStr(iLocateID));
		include(PROC0024); 
  end;
  // Sachmerkmale neu einlesen
  Sachmerkmale('R','tsBSAPSuche', LB_ParaSachmerkmale.Caption);
End;
Hier habe ich mal bei q_9 eine Messagebox eingefügt. Aber die wird niemals aufgerufen.

Mein Problem ist: ich muss der Maske mitteilen, dass im q_9 (BSAPGAF) etwas passiert ist (einfügen, ändern oder löschen), damit ich einen Button anzeige, der die neue Preisbrechnung durchführt.

Ich verstehe nicht, warum Änderungen in q_9 nicht von der Maske erkannt werden. Der TIB-Grid funktioniert ja an sich. Der einzige Unterschied zu den anderen TIB-Grids (die alle korrekt funktionieren und auch im frmAfterInsert und frmAfterPost erkannt werden) ist die MasterSource. Der TIB-Grid hat den MasterSource D_2 weil es sich um ein Unterprogramm von BSAPG handelt.

Kann es sein, das die Masken nur Änderungen der TIB-Grids mit MasterSource D_1 erkennen?

Beste Grüße
Thomas
Software-Version: 6.6.10.0
DB-Version: AVERP2018.03
Server: Windows 10 Pro Intel Xeon E3-1230v6 - 16GB RAM
50 User
Antworten