Delphi 的两个初级问题(100分)

  • 主题发起人 主题发起人 protagonist
  • 开始时间 开始时间
P

protagonist

Unregistered / Unconfirmed
GUEST, unregistred user!
1。一个报表打印用 select * from **** 的结果有几百条记录,如何在一张纸上设定
只打40条记录,其他转为下一页打印。就是每张纸打印40条记录,以此类推。

2。如何用Delphi 在本地硬盘中动态创建一个表。用来存放用 Select * from ****
查询 SQL Server 中一个表的记录。功能有如 Datapump ,但是我须要的是存放
条件查询后的记录。
希望大虾的慷慨解囊,小弟在此 Thank you very much!
 
>>动态创建一个表:
procedure tform1.create_tbl;
var tbl:ttable;
begin
tbl:=ttable.create(self); // 如没有声明中的"tform1.",Delphi不认这个self
with tbl do
begin
datebasename:=;dbdemos';
tablename:='my_tbl';
with fielddefs do
begin
clear;
add('No',ftInteger,0,false);
add('Name',ftString,0,false);
...
end;
with indexdefs do
begin
clear;
add('primary','no',[ixPrimary,ixUnique]);
...
end;
CreateTable;
end;
end;

 
1。报表打印最好在Excel中实现,记录设定比较容易。Quickrep做报表不行。
2.Insert into 新表名 from (select * from ***).
 
写detail band的事件 AfterPrint (每打一行会触发一次)
计算到你想换页时 TquickRep.NewPage
 
Select * from ****
动态的创建的表要和原来的表有相同的结构,
然后设置其数据集,在原query(Select * from **** )和新建表的数据集之间
更新数据。更详细的可以看我问的那个“怎样在两台sql server之间更新数据”的问题。
 
使用存储过程:
create table test as select * from test2 where ....
 
1、有两种办法:
A、写detail band的事件 AfterPrint (每打一行会触发一次)
计算到你想换页时 TquickRep.NewPage
B、控制DETAILBAND的高度,然后在页面的底部加一个BAND(作为PAGE FOOTER),
适当调整FOOTER的高度,就可以让他每页打印40行了。

2、用BATCHMOVE构件就可以了,他的SOURCE是一个QUERY,对应的是你的SQL语句(select
* from ....),DESTINATION是你要指定的一个TABLE(指定他的TABLENAME为你本地
硬盘的一个文件名)。

 
那位仁兄可以教我 detail band 的事件 AfterPrint 怎么用.
小弟我刚踏进 delhi 的编程队伍.很多东西都不懂,希望在大家多多指教.
 
to happyok
如何用 Excel 完成报表打印.
 
yck is right
 
多人接受答案了。
 
后退
顶部