全部博文(788)
分类:
2009-01-04 16:55:46
真是越省你事越懒了
你不会想点下鼠标出个程序吧...
顶,刚好我也遇到这个问题
呵呵,这个不大好实现
把选中的记录传给ADOX,再将ADOX传给FR。这样行啊。只是多了一层。
创建一个内存表,把选中的追加到内存表中,再传给FR。
//内存表建立:
function CreateTableInMemory(const AFieldDefs:TFieldDefs):TDataSet;
var
TempTable:TClientDataSet;
begin
TempTable:=nil;
Result:=nil;
if AFieldDefs<>nil then
begin
try
TempTable:=TClientDataSet.Create(Application);
TempTable.FieldDefs.Assign(AFieldDefs);
TempTable.CreateDataSet;
Result:=(TempTable as TDataSet);
except
if TempTable<>nil then TempTable.Free;
Result:=nil;
raise;
end
end
end;
//打印:
procedure TFrmMain.PrintBtnClick(Sender: TObject);
var
ADataSet:TDataSet;
Over1,Reset1,Spare1:real;
Res:SearR;
begin
ADataSet:=TDataSet.Create(Application);
with ADataSet.FieldDefs do
begin
Add('Empid,ftString,10,False);
Add('EmpName',ftString,10,False);
Add('OverTime,ftFloat,0,False);
Add('Date',ftDate,0,False);
end;
with RmDBDataSet1,Search do
begin
DataSet:=CreateTableInMemory(ADataSet.FieldDefs);
DataSet.Open;
//在这里循环追加你DBGridEh选中的记录
begin
DataSet.InsertRecord([FieldByName('Empid').AsString,
FieldByName('EmpName').AsString,
Res.OverTime,
Date
]);
end;
end;
ADataSet.Free;
Ds1.DataSet:=RmDBDataSet1.DataSet; //传递给DataSource,也就是FR对应的
end;
//以上仅为参考,此程序需要Midas.dll库