Ik zit ernstig te puzzelen hoe ik dit probleem kan verhelpen, probeer te voorkomen dat er een dubbele waarde naar de database wordt geschreven. Ik wil graag dat de toe te voegen data eerst wordt gecheckt of het primaire veld al bestaat (Id : String). Als hij bestaat moet hij gewoon worden overgeslagen en doorgaan met de evt volgende record.
Ik wil graag meerdere records toevoegen, en ze moeten allemaal gecontroleerd worden.
Mogelijk zien jullie wat ik kan verbeteren in mijn code.
Code:
procedure TForm1.btnToDatabaseClick(Sender: TObject);
var I, MarkerAdd, position : Integer;
KksId, KksOmschrijving, KksLokatie : String;
begin
CtrlMemo.Lines.Add('records in database : ' + IntToStr(FDTable1.RecordCount));
for I := 0 to FinalFile.Count-1 do
begin
while not FDTable1.Eof do
begin
MarkerAdd := 0;
KksId := FinalFile[I];
KksId := AnsiUpperCase(KksId);
position := AnsiPos(';', KksId);
delete(KksId, position, KksId.Length);
KksOmschrijving := FinalFile[I];
KksOmschrijving := AnsiUpperCase(KksOmschrijving);
delete(KksOmschrijving, 1, position);
if KksId = FDTable1.FieldByName('Id').AsString then
begin
MarkerAdd := FDTable1.RecNo + 1; //anders kan de dubble ook in de 1ste record zitten
showmessage('dubbel joh');
end;
{ else
begin
//ff nix
end; }
FDTable1.Next;
//end;
if MarkerAdd = 0 then
begin
fdqDoInsert.Close;
fdqDoInsert.SQL.Text := 'INSERT INTO ToKks(Id, Omschrijving, Lokatie) VALUES('+QuotedStr(KksId)+','+QuotedStr(KksOmschrijving)+','+QuotedStr('nader te bepalen')+')';
fdqDoInsert.ExecSQL;
CtrlMemo.Lines.Add(KksId);
FDTable1.Next;
end;
//FDTable1.Next;
end;
end;
UpdateGrid; //aparte procedure bepaal autosize collum en refresh stringgrid
CtrlMemo.Lines.Add('records in database : ' + IntToStr(FDTable1.RecordCount));
end;
Bookmarks