FastReport中,打印选中的记录 VCL组件开发及应用http://www.delphi2007.net/DelphiVCL/html/delphi_20061221203712206.html
ADOquery,select * from mytable
数据放在DbGridEh中,现在DbGridEh中的纪录有个选择字段,可以选中,如何FastReport只打印选中的纪录呢?(没有保存)
真是越省你事越懒了
你不会想点下鼠标出个程序吧...
顶,刚好我也遇到这个问题
呵呵,这个不大好实现
把选中的记录传给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库