Sicher, dass die 101 noch nicht da ist?
Ausgehend von den Quelltextfragmenten, kann es die 101 nur einmal geben.
Zumindest gehe ich mal davon aus, dass du da eine For-Schleife mit sowas wie
for i := 0 to n
hast. Wenn dem so ist, warum wird dann nicht schon bei Nr. 100 gemoppert?
Wenn i bei 1 beginnt, hieße das aber, dass bereits der erste Satz als Schlüsselverletzung angesehen wird. Dies erscheint mir dann aber doch ziemlich schräg, könnte aber bedeuten, dass irgend etwas konfigurationstechnisch dafür sorgt, dass jeder Datensatz mindestens zweimal (aus Sicht der Datenbank) dort ankommt.
Was passiert, wenn Du (vorerst) nach jedem Satz mal ein Commit machst? Quasi
if i mod 1 = 0 then begin
Zumindest müsstest Du bei einem satzweisen Commit ja dann nachschauen können, ob schon 'ne 101 da ist. Wenn nicht, dann muss das Problem bei FireDac liegen.
Eventuell könntest Du den Quelltext mal ein bisserl umbauen:
Delphi-Quellcode:
DM.DS.Insert;
DM.DS.FieldByName('
NR').AsInteger := i + 100;
DM.DS.FieldByName('
BEZ').AsInteger := i;
try
DM.DS.Post;
except
on e :
Exception do begin
DM.DS.Cancel;
mem1.Lines.Add(Format('
i = %d - %s'[i,e.
Message]));
end;
end;
Wie oft bekommst Du hier i = 1 zu sehen? Denn das müsste ja eigentlich zu dem Fehler führen.
Zugegeben sind mein Vorschläge gerade nur reines stochern im Nebel, darfst sie von daher gerne ignorieren