多谢!
解决方案 »
- 求助网络监听程序执行时总是提示“Access Violation at address……”???
- 请教delphi用一个按钮实现启动和暂停
- 内存写入(高分提问)
- fastreport 使用交叉表时 ,设计时预览正常,执行的时候预览提示 没有tfrCrossView 没有找到
- 关于decision club 将横坐标维数分段统计的问题
- sql server数据库字段sj:datatime类型,用adotable相连,在DBGrid 中我在些字段输入8:00,为何dbgrid显示的却是1899-12-30 8:30:00,但后
- 在DELPHI中怎么创建临时表?
- 我要参加 Borland 大赛,大家给出个注意吧,怎样才算有创意?
- 我想在DBGrid1中的indicator中显示table中的数据记录数,如:1、2、3?如何操作?
- socket 怎样发送和接收 record类型的数据?
- 为Delphi聚些人气,特举办一个盖楼有奖活动,大家都来参加吧
- 急,客户这么变态的要求,怎么选择前后台数据库呢?
2.在用户介面要有一个DBGrid控件,数据源是连接aTABLE,给用户选择打印数据之用的.
3.QuickReport连的数据源是btable表.
4.打印按钮的代码如下:var
i:integer;
begin
{------如果用户有选择了数据--------}
if DBGrid.SelectedRows.Count>0 then begin
ADOQuery.DisableControls;{数据源是aTABLE表}
for i := 0 to DBGrid.SelectedRows.Count- 1 do begin
ADOQuery.GotoBook(pointer(DBGrid.SelectedRows.Items[i]));
with ADOQuery2 begin
append;
FieldByName('x_a').AsString:= adoquery.FieldByName('x_a').AsString;
FieldByName('x_b').AsString:= adoquery.FieldByName('x_b').AsString;
post;
end;
...你的打印控制;
ADOQuery.EnableControls;
end;
end else begin {没有选择数据的情况下为全部打印}
with ADOQuery begin
DisableControls;
First;
while not eof begin
ADOQuery2.append;
ADOQuery2.FieldByName('x_a').AsString:= FieldByName('x_a').AsString;
ADOQuery2.FieldByName('x_b').AsString:= FieldByName('x_b').AsString;
ADOQuery2.post;
next;
end;
EnableControls;
end;
........你的打印代码
end;
end;
或者创建个中间临时数据集,就用clientdataset吧,简单方便,把选中的记录暂存这里,然后传它到report里面去
2.转移法:放一个内存数据集,把要打印的放到内存数据集中,用quickreport关联他然后打印。
zhoutler已经说的很清楚了。