比较头疼的问题
做收费系统中的报表部分,开发环境 delphi6 + Sql Server2000 + Excel2003目前思路如下:软件 报表的查询统计 打印 这3部分尽量做到独立,这样对报表进行修改或增加时尽量不改动源代码 所以 查询统计部分全部放到存储过程里面去做,也就是说,针对不同的报表需求,只需要更改存储过程里面的代码即可,这样可以不依赖于报表软件的修改 报表软件只需要负责调用此存储过程,得到其返回的数据集,然后通过Com调用Excel填充打印即可针对数据查询统计这一部分,我对存储过程复杂的使用还不是很熟悉,目前打算这样做: 1.在存储过程中建立一个临时表
2.将查询统计出来的结果全部插入到此临时表中(针对一张报表,查询统计出的结果的表结构一样)
3.存储过程将此临时表返回给报表软件
4.报表软件得到返回的数据集和内的数据,然后开始打印准备大体的处理思路如下,写了如下的小的例子,遇到问题
存储过程如下:问题1:
--ttoll_data 为数据表
--只是完成一个简单的统计条数的例子
create procedure querydata
as
create table #TmpData(tmpcount int)
insert into TmpData (tmpcount ) (select count(*) from ttoll_data)
GO
Delphi调用如下
界面上ADOConnection1,ADOStoredProc1,DataSource1,DBGrid1 ADOStoredProc1.ProcedureName := 'querydata_1';
ADOStoredProc1.Prepared := true;
ADOStoredProc1.Open;
如何能够把TmpData里面的内容在DBGrid1显示出来呢??问题2:如果我统计的报表内容非常庞大,比如10万条记录,有什么好的处理办法呢??多谢大家赐教!!先放100分,后面可能还会有陆续的问题,到时候在+分,hoho
做收费系统中的报表部分,开发环境 delphi6 + Sql Server2000 + Excel2003目前思路如下:软件 报表的查询统计 打印 这3部分尽量做到独立,这样对报表进行修改或增加时尽量不改动源代码 所以 查询统计部分全部放到存储过程里面去做,也就是说,针对不同的报表需求,只需要更改存储过程里面的代码即可,这样可以不依赖于报表软件的修改 报表软件只需要负责调用此存储过程,得到其返回的数据集,然后通过Com调用Excel填充打印即可针对数据查询统计这一部分,我对存储过程复杂的使用还不是很熟悉,目前打算这样做: 1.在存储过程中建立一个临时表
2.将查询统计出来的结果全部插入到此临时表中(针对一张报表,查询统计出的结果的表结构一样)
3.存储过程将此临时表返回给报表软件
4.报表软件得到返回的数据集和内的数据,然后开始打印准备大体的处理思路如下,写了如下的小的例子,遇到问题
存储过程如下:问题1:
--ttoll_data 为数据表
--只是完成一个简单的统计条数的例子
create procedure querydata
as
create table #TmpData(tmpcount int)
insert into TmpData (tmpcount ) (select count(*) from ttoll_data)
GO
Delphi调用如下
界面上ADOConnection1,ADOStoredProc1,DataSource1,DBGrid1 ADOStoredProc1.ProcedureName := 'querydata_1';
ADOStoredProc1.Prepared := true;
ADOStoredProc1.Open;
如何能够把TmpData里面的内容在DBGrid1显示出来呢??问题2:如果我统计的报表内容非常庞大,比如10万条记录,有什么好的处理办法呢??多谢大家赐教!!先放100分,后面可能还会有陆续的问题,到时候在+分,hoho
Delphi报的错误为 “对象名TmpData无效”刚刚看了一下资料
--ttoll_data 为数据表
--只是完成一个简单的统计条数的例子
create procedure querydata
as
create table #TmpData(tmpcount int)
insert into TmpData (tmpcount ) (select count(*) from ttoll_data)
--返回临时表内容
select * from TmpData
GO
不过这样写还是会出 “对象名TmpData无效”错误,不知该怎么弄
create table #TmpData(tmpcount int)
--TmpData 忘记#了
insert into #TmpData (tmpcount) (select count(*) from ttoll_data)
select * from #TmpData
那第二个问题,谁能给个解决的思路
IF OBJECT_ID('临时表') >0
INSERT INTO 临时表
SELECT * FROM TABLE1
WHERE 条件
ELSE
SELECT * INTO 临时表 FROM TABLE1 WHERE ..[
[/code]
IF OBJECT_ID('临时表') >0
INSERT INTO 临时表
SELECT * FROM TABLE1
WHERE 条件
ELSE
SELECT * INTO 临时表 FROM TABLE1 WHERE .
insert into @TmpData (tmpcount) (select count(*) from ttoll_data)
select * from @TmpData