Kaum ist das erste Problem gelöst, habe ich schon wieder ein neues
Jetzt soll ich das Programm noch so umschreiben, dass die beiden Tabellen beim Aufruf direkt verglichen werden und bei Unterschieden in der Spalte "Description" sollen die jeweiligen Zeilen in der Slave-Tabelle farbig markiert werden.
Ich möchte das folgender Maßen machen:
Ich habe in der Slave ein berechnendes Feld eingefügt, welches den Description Wert der Slave-Tabelle, mit dem Description Wert der Master-Tabelle vergleicht. Sind die werte gleich wird keine Farbe gesetzt(wert = 0), ist in der Master kein wert, dann soll der Slave wertgelöscht werden und die Zeile rot markiert werden(wert = 2), soll ein Text in der Slave hinzugefügt werden oder geändert werden soll die Zeile gelb markiert werden(wert = 1). In der Prozedure dbgSlaveDrawColumnCell wird dann je nach Wert die richtige Farbe gesetzt, was auch funktioniert. Jedoch gibt es schwierigkeiten bei dem Calcfields...
Mein bisheriger Quelltext:
(mein berechnendes Feld heißt: QrySlaveVeraendert)
Delphi-Quellcode:
procedure TFMain.QrySlaveCalcFields(DataSet: TDataSet);
begin
if ersterDurchgang = 0 then
begin
Inc(ersterDurchgang);
QryMaster.First;
QrySlave.First;
end;
if QryMaster.FieldByName('Description').Value <> QrySlave.FieldByName('Description').Value
then
begin
if QryMaster.FieldByName('Description').Value = '' then
begin
QrySlaveVeraendert.Value := 2;
end
else begin
QrySlaveVeraendert.Value := 1;
end;
end
else begin
QrySlaveVeraendert.Value := 0;
end;
if (QryMaster.Eof = false) and (QrySlave.Eof = false) then
begin
QryMaster.Next;
QrySlave.Next;
end
end;
Angehängt ist ein Screenshot meines Programmes nach Ausführen der Prozedur... wie zu sehen ist, bekommt er für die Master-Tabelle nicht die richtigen Werte. Falls ein Wert in der Slave vorhanden ist, wird dieser rot markiert, soll also gelöscht werden, obwohl in der Master Tabelle ein Wert vorhanden ist.