Sokat filóztam, mit kéne tenni.
Hát elég érdekesen oldottam meg a dolgot, de működik!
Létrehoztam még egy MemDataSet komponenst TempMemDataset néven aminek 2 sort hozok létre induláskor és ezekbe másolgatok.
//adatmodulban
procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
TempMemDataset.Append;
TempMemDataset.Fields.Fields[0].Value:= '';
TempMemDataset.Fields.Fields[1].Value:= '';
TempMemDataset.Post;
TempMemDataset.Append;
TempMemDataset.Fields.Fields[0].Value:= '';
TempMemDataset.Fields.Fields[1].Value:= '';
TempMemDataset.Post;
end;
//unit1-ben
procedure TForm1.ButtonFelClick(Sender: TObject);
begin
DataModule1.TempMemDataset.First; //temp első record
DataModule1.TempMemDataset.Edit; //szerkeszt, az aktuális rekord másol ide
DataModule1.TempMemDataset.Fields.Fields[0].Value:= DataModule1.MemDataset1.FieldByName('FIELDKOD').Value;
DataModule1.TempMemDataset.Fields.Fields[1].Value:= DataModule1.MemDataset1.FieldByName('FIELDNEV').Value;
DataModule1.TempMemDataset.post;
DataModule1.MemDataset1.Prior; //aktuális előttire áll
if (DataModule1.MemDataset1.BOF <> true) then
begin
DataModule1.TempMemDataset.Next; //temp másodikra áll
DataModule1.TempMemDataset.Edit; //másolás
DataModule1.TempMemDataset.Fields.Fields[0].Value:= DataModule1.MemDataset1.FieldByName('FIELDKOD').Value;
DataModule1.TempMemDataset.Fields.Fields[1].Value:= DataModule1.MemDataset1.FieldByName('FIELDNEV').Value;
DataModule1.TempMemDataset.post;
DataModule1.TempMemDataset.First;
DataModule1.MemDataset1.Edit;
DataModule1.MemDataset1.Fields.Fields[0].Value:= DataModule1.TempMemDataset.FieldByName('TEMPKOD').Value;
DataModule1.MemDataset1.Fields.Fields[1].Value:= DataModule1.TempMemDataset.FieldByName('TEMPNEV').Value;
DataModule1.MemDataset1.Post;
DataModule1.MemDataset1.next;
DataModule1.TempMemDataset.Next;
DataModule1.MemDataset1.Edit;
DataModule1.MemDataset1.Fields.Fields[0].Value:= DataModule1.TempMemDataset.FieldByName('TEMPKOD').Value;
DataModule1.MemDataset1.Fields.Fields[1].Value:= DataModule1.TempMemDataset.FieldByName('TEMPNEV').Value;
DataModule1.MemDataset1.Post;
DataModule1.MemDataset1.Prior;
end;
end;
procedure TForm1.ButtonLeClick(Sender: TObject);
begin
DataModule1.TempMemDataset.First; //temp első record
DataModule1.TempMemDataset.Edit; //szerkeszt, az aktuális rekord másol ide
DataModule1.TempMemDataset.Fields.Fields[0].Value:= DataModule1.MemDataset1.FieldByName('FIELDKOD').Value;
DataModule1.TempMemDataset.Fields.Fields[1].Value:= DataModule1.MemDataset1.FieldByName('FIELDNEV').Value;
DataModule1.TempMemDataset.post;
DataModule1.MemDataset1.Next; //aktuális utánira áll
if (DataModule1.MemDataset1.EOF <> true) then
begin
DataModule1.TempMemDataset.Next; //temp másodikra áll
DataModule1.TempMemDataset.Edit; //másolás
DataModule1.TempMemDataset.Fields.Fields[0].Value:= DataModule1.MemDataset1.FieldByName('FIELDKOD').Value;
DataModule1.TempMemDataset.Fields.Fields[1].Value:= DataModule1.MemDataset1.FieldByName('FIELDNEV').Value;
DataModule1.TempMemDataset.post;
DataModule1.MemDataset1.Prior;
DataModule1.MemDataset1.Edit;
DataModule1.MemDataset1.Fields.Fields[0].Value:= DataModule1.TempMemDataset.FieldByName('TEMPKOD').Value;
DataModule1.MemDataset1.Fields.Fields[1].Value:= DataModule1.TempMemDataset.FieldByName('TEMPNEV').Value;
DataModule1.MemDataset1.Post;
DataModule1.MemDataset1.next;
DataModule1.TempMemDataset.First;
DataModule1.MemDataset1.Edit;
DataModule1.MemDataset1.Fields.Fields[0].Value:= DataModule1.TempMemDataset.FieldByName('TEMPKOD').Value;
DataModule1.MemDataset1.Fields.Fields[1].Value:= DataModule1.TempMemDataset.FieldByName('TEMPNEV').Value;
DataModule1.MemDataset1.Post;
end;
end;
Nem tudom, hogy kevesebb lépésből meg lehet e csinálni egyszerübben, de egyenlőre a feladatát elvégzi.
Persze nem jó minden táblára..., de ha van egyszerübb általános megoldás, akkor érdekel!