2017-08-30 1 views
0

Ich habe eine Frage zu UniDAC der uniQuery:Wenn uniQuery geöffnet ist, warum DataSource.onDataChange 2 mal auslösen?

wenn uniQuery geöffnet, wenn ein DataSource Komponente verknüpft ist, wird die DataSource.onDataChange 2 mal auslösen, und ADOQuery Trigger nur 1 Mal, warum?

Environment:

  1. UniDAC: 6.4, 7;
  2. delphi: 7, xe 10.1 berlin
+0

umgebung: 1 uniDAC: 6,4, 7; 2 delphi: 7, xe 10.1 berlin – d5f

+0

Wenn Sie Details zu Ihrer Frage hinzufügen möchten, tun Sie dies, indem Sie die Frage bearbeiten (siehe Bearbeiten unter den Tags) –

+0

Wie viele Datensätze (von uniQuery zurückgegeben) haben Sie? –

Antwort

0

konfrontiert ich das gleiche Problem oft, ich fand, dass es sich um ein Standard-Ladeverhalten nicht nur in der Uni-Komponente ist, alle ähnlichen Datenbankkomponenten auslösen .onDataChange zweimal oder mehr beim Laden, der einzige Weg, um darüber zu gehen, ist die Verwendung von Workarounds, um den ersten Trigger zu ignorieren.

Sie können auch ein ähnliches Problem finden here

Wenn zweimal Auslösung ärgerlich Sie ist, versuchen, meine Abhilfe für sie:

var c: integer; // must be global and reset to 0 when u close your query 

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); 
    begin 
     if c = 2 then 
     begin 
      // do your actions 
     end 
     else 
     begin 
      inc(c); 
     end; 
    end; 

Es werden alle keine notwendige Auslöser zu beseitigen,
Hoffnung, das hilft.

Verwandte Themen