Hi Rolf!
Um die doppelten Einträge der RechNr aus Deiner Tabelle zu löschen, schlage ich Dir folgende Lösungen vor:
A.
SQL-Anweisung: Kurz und knackig, aber sie funktioniert NUR wenn die „id“ in der Tabelle eindeutig ist:
SQL-Code:
delete from tabelle
where id not in (select max(id)
from tabelle
group by rechnr)
B. ein Versuch der allgemeinen Lösung:
Delphi-Quellcode:
procedure my_procedure();
var
my_query: TQuery;
begin
my_query := TQuery.Create(self);
my_query.SQL.Add('select rechnr, max(id) as max_id from test003 group by rechnr');
my_query.Prepare;
my_query.Open;
if my_query.RecordCount <> 0 then
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('delete from test003');
Query1.SQL.Add('where rechnr = :rechnr');
Query1.SQL.Add(' and id <> :id');
my_query.first;
while not my_query.EOF do
begin
Query1.ParamByName('rechnr').Value := my_query.FieldbyName('rechnr').AsString;
Query1.ParamByName('id').Value := my_query.FieldbyName('max_id').AsInteger;
Query1.ExecSQL;
my_query.next;
end;
end;
my_query.Close;
my_query.Destroy;
end;
Sag bescheid ob es geklappt hat....
An einer eleganteren Lösung (
SQL) wäre ich auch interessiert.
Viele Grüße
Markus