D
dh9450
Unregistered / Unconfirmed
GUEST, unregistred user!
是关于统计然后生成报表的 在此98/ME 上运行很正常 在2000/XP下 就会提示 ‘MSDART.DLL’出错 然后内存溢出 因为手上没有2000/XP的机器 也不知道哪句不对
麻烦大家了 写的很烂 不要笑我哦
说明一下
dy1、dt2是DateTimePicker
qr_tqy是一个QuickRep
qy1是ADOQUERY
pb是一个ProgressBar
有点乱 麻烦大家了
procedure Tfrm_t_qy.Button1Click(Sender: TObject);
var i,j:integer;
sx,hy,dt_1,dt_2:string;
count:array[0..18] of string;
count1:array[0..18] of Integer;
qtext:array[0..18] of TQRRichText;
e:array[0..18] of tqrexpr;
begin
try
qr_tqy:=tqr_tqy.Create(application);
e[0]:=qr_tqy.e1;
e[1]:=qr_tqy.e2;
e[2]:=qr_tqy.e3;
e[3]:=qr_tqy.e4;
e[4]:=qr_tqy.e5;
e[5]:=qr_tqy.e6;
e[6]:=qr_tqy.e7;
e[7]:=qr_tqy.e8;
e[8]:=qr_tqy.e9;
e[9]:=qr_tqy.e10;
e[10]:=qr_tqy.e11;
e[11]:=qr_tqy.e12;
e[12]:=qr_tqy.e13;
e[13]:=qr_tqy.e14;
e[14]:=qr_tqy.e15;
e[15]:=qr_tqy.e16;
e[16]:=qr_tqy.e17;
e[17]:=qr_tqy.e18;
e[18]:=qr_tqy.e19;
/////////
dt_1:=datetostr(dt1.date);
dt_2:=datetostr(dt2.date);
//以下为生成表头
qr_tqy.qy1.close;
qr_tqy.qy1.SQL.Clear;
qr_tqy.qy1.SQL.Add('select * from 行业类别 where 所属产业 like '+'''农业''');
qr_tqy.qy1.Open;
qtext[0]:=qr_tqy.x1;
qtext[1]:=qr_tqy.x2;
qtext[2]:=qr_tqy.x3;
qtext[3]:=qr_tqy.x4;
qtext[4]:=qr_tqy.x5;
qtext[5]:=qr_tqy.x6;
qtext[6]:=qr_tqy.x7;
qtext[7]:=qr_tqy.x8;
qtext[8]:=qr_tqy.x9;
qtext[9]:=qr_tqy.x10;
qtext[10]:=qr_tqy.x11;
qtext[11]:=qr_tqy.x12;
qtext[12]:=qr_tqy.x13;
qtext[13]:=qr_tqy.x14;
qtext[14]:=qr_tqy.x15;
qtext[15]:=qr_tqy.x16;
qtext[16]:=qr_tqy.x17;
qtext[17]:=qr_tqy.x18;
qtext[18]:=qr_tqy.x19;
for i:=0 to qr_tqy.Qy1.RecordCount-1 do
begin
qtext.Lines.Clear;
qtext.Lines.Add(qr_tqy.Qy1.FieldList[0].AsString);
qr_tqy.Qy1.Next;
end;
j:=qr_tqy.Qy1.RecordCount;
qr_tqy.Qy1.Close;
qr_tqy.Qy1.SQL.Clear;
qr_tqy.Qy1.SQL.Add('select * from 行业类别 where 所属产业 like '+'''制造业''');
qr_tqy.Qy1.Open;
for i:=j to qr_tqy.Qy1.RecordCount +j -1 do
begin
qtext.Lines.Clear;
qtext.Lines.Add(qr_tqy.Qy1.FieldList[0].AsString);
qr_tqy.Qy1.Next;
end;
j:=qr_tqy.Qy1.RecordCount +j ;
qr_tqy.Qy1.Close;
qr_tqy.Qy1.SQL.Clear;
qr_tqy.Qy1.SQL.Add('select * from 行业类别 where 所属产业 like '+'''服务业''');
qr_tqy.Qy1.Open;
for i:=j to qr_tqy.Qy1.RecordCount +j -1 do
begin
qtext.Lines.Clear;
qtext.Lines.Add(qr_tqy.Qy1.FieldList[0].AsString);
qr_tqy.Qy1.Next;
end;
//表头生成结束
//以下为生成临时表tmp_enterprise,用于存放统计数据
qr_tqy.Qy1.close;
qr_tqy.Qy1.SQL.Clear;
qr_tqy.Qy1.SQL.Add('delete from tmp_enterprise'); //清空表
qr_tqy.Qy1.ExecSQL;
qr_tqy.Qy1.close;
qr_tqy.Qy1.SQL.Clear;
qr_tqy.Qy1.SQL.Add('select * from 市县');
qr_tqy.Qy1.Open;
pb.max:=(qr_tqy.qy1.RecordCount * 18)+20;
pb.Position :=0;
for i:=1 to qr_tqy.Qy1.RecordCount do
begin
sx:=qr_tqy.Qy1.FieldList[0].AsString;
for j:=0 to 18 do
begin
hy:=qtext[j].Lines.Strings [0]+qtext[j].Lines.Strings [1]+qtext[j].Lines.Strings [2];
qr_tqy.Qy2.close;
qr_tqy.Qy2.sql.clear;
qr_tqy.qy2.SQL.Add('select 公司名称 from 企业基本资料 where 所在市县='+''''+sx+''''+'and 行业类别='+''''+trim(hy)+''''+' and 注册时间 >= '+''''+dt_1 +''''+'and 注册时间 <= '+''''+dt_2+'''');
if frm_t_qy.rb_cz.Checked =true then
begin
qr_tqy.qy2.SQL.Add('and 是否存在='+''''+'是'+'''');
end
else
if frm_t_qy.rb_bcz.Checked =true then
begin
qr_tqy.qy2.SQL.Add('and 是否存在='+''''+'否'+'''');
end;
qr_tqy.Qy2.Open;
count[j]:=inttostr(qr_tqy.Qy2.RecordCount );
pb.Position:=pb.Position+1;
end;
qr_tqy.Qy2.close;
qr_tqy.Qy2.SQL.Clear;
qr_tqy.Qy2.sql.Add('insert into tmp_enterprise values('+''''+sx+''''+','+count[0]+','+count[1]+',');
qr_tqy.Qy2.sql.add(count[2]+','+count[3]+','+count[4]+','+count[5]+','+count[6]+','+count[7]+',');
qr_tqy.Qy2.sql.add(count[8]+','+count[9]+','+count[10]+','+count[11]+','+count[12]+','+count[13]+','+count[14]+','+count[15]+','+count[16]+','+count[17]+','+count[18]+',0)');
qr_tqy.Qy2.ExecSQL ;
qr_tqy.Qy1.Next;
end;
qr_tqy.qdt1.Caption :=datetostr(dt1.Date );
qr_tqy.qdt2.Caption :=datetostr(dt2.Date );
qr_tqy.q_bt.Caption:=ed_bt.text;
qr_tqy.l_zbr.Caption :=frm_dl.dbcb.Text ;
for i:= 0 to 18 do
begin
e.Expression:='sum(table.value' +inttostr(i+1)+')';
pb.Position:=pb.Position+1;
end;
qr_tqy.table.Close;
qr_tqy.table.Open;
qr_tqy.PreviewModal ;
finally
qr_tqy.Free;
end;
close
end;
对了 问一下 要是想事项象XP里的图片缩略图那样的功能该怎么做呢 就是一个文件夹里所有的图片都可以看到小图 点其中一个再放大
麻烦大家了 写的很烂 不要笑我哦
说明一下
dy1、dt2是DateTimePicker
qr_tqy是一个QuickRep
qy1是ADOQUERY
pb是一个ProgressBar
有点乱 麻烦大家了
procedure Tfrm_t_qy.Button1Click(Sender: TObject);
var i,j:integer;
sx,hy,dt_1,dt_2:string;
count:array[0..18] of string;
count1:array[0..18] of Integer;
qtext:array[0..18] of TQRRichText;
e:array[0..18] of tqrexpr;
begin
try
qr_tqy:=tqr_tqy.Create(application);
e[0]:=qr_tqy.e1;
e[1]:=qr_tqy.e2;
e[2]:=qr_tqy.e3;
e[3]:=qr_tqy.e4;
e[4]:=qr_tqy.e5;
e[5]:=qr_tqy.e6;
e[6]:=qr_tqy.e7;
e[7]:=qr_tqy.e8;
e[8]:=qr_tqy.e9;
e[9]:=qr_tqy.e10;
e[10]:=qr_tqy.e11;
e[11]:=qr_tqy.e12;
e[12]:=qr_tqy.e13;
e[13]:=qr_tqy.e14;
e[14]:=qr_tqy.e15;
e[15]:=qr_tqy.e16;
e[16]:=qr_tqy.e17;
e[17]:=qr_tqy.e18;
e[18]:=qr_tqy.e19;
/////////
dt_1:=datetostr(dt1.date);
dt_2:=datetostr(dt2.date);
//以下为生成表头
qr_tqy.qy1.close;
qr_tqy.qy1.SQL.Clear;
qr_tqy.qy1.SQL.Add('select * from 行业类别 where 所属产业 like '+'''农业''');
qr_tqy.qy1.Open;
qtext[0]:=qr_tqy.x1;
qtext[1]:=qr_tqy.x2;
qtext[2]:=qr_tqy.x3;
qtext[3]:=qr_tqy.x4;
qtext[4]:=qr_tqy.x5;
qtext[5]:=qr_tqy.x6;
qtext[6]:=qr_tqy.x7;
qtext[7]:=qr_tqy.x8;
qtext[8]:=qr_tqy.x9;
qtext[9]:=qr_tqy.x10;
qtext[10]:=qr_tqy.x11;
qtext[11]:=qr_tqy.x12;
qtext[12]:=qr_tqy.x13;
qtext[13]:=qr_tqy.x14;
qtext[14]:=qr_tqy.x15;
qtext[15]:=qr_tqy.x16;
qtext[16]:=qr_tqy.x17;
qtext[17]:=qr_tqy.x18;
qtext[18]:=qr_tqy.x19;
for i:=0 to qr_tqy.Qy1.RecordCount-1 do
begin
qtext.Lines.Clear;
qtext.Lines.Add(qr_tqy.Qy1.FieldList[0].AsString);
qr_tqy.Qy1.Next;
end;
j:=qr_tqy.Qy1.RecordCount;
qr_tqy.Qy1.Close;
qr_tqy.Qy1.SQL.Clear;
qr_tqy.Qy1.SQL.Add('select * from 行业类别 where 所属产业 like '+'''制造业''');
qr_tqy.Qy1.Open;
for i:=j to qr_tqy.Qy1.RecordCount +j -1 do
begin
qtext.Lines.Clear;
qtext.Lines.Add(qr_tqy.Qy1.FieldList[0].AsString);
qr_tqy.Qy1.Next;
end;
j:=qr_tqy.Qy1.RecordCount +j ;
qr_tqy.Qy1.Close;
qr_tqy.Qy1.SQL.Clear;
qr_tqy.Qy1.SQL.Add('select * from 行业类别 where 所属产业 like '+'''服务业''');
qr_tqy.Qy1.Open;
for i:=j to qr_tqy.Qy1.RecordCount +j -1 do
begin
qtext.Lines.Clear;
qtext.Lines.Add(qr_tqy.Qy1.FieldList[0].AsString);
qr_tqy.Qy1.Next;
end;
//表头生成结束
//以下为生成临时表tmp_enterprise,用于存放统计数据
qr_tqy.Qy1.close;
qr_tqy.Qy1.SQL.Clear;
qr_tqy.Qy1.SQL.Add('delete from tmp_enterprise'); //清空表
qr_tqy.Qy1.ExecSQL;
qr_tqy.Qy1.close;
qr_tqy.Qy1.SQL.Clear;
qr_tqy.Qy1.SQL.Add('select * from 市县');
qr_tqy.Qy1.Open;
pb.max:=(qr_tqy.qy1.RecordCount * 18)+20;
pb.Position :=0;
for i:=1 to qr_tqy.Qy1.RecordCount do
begin
sx:=qr_tqy.Qy1.FieldList[0].AsString;
for j:=0 to 18 do
begin
hy:=qtext[j].Lines.Strings [0]+qtext[j].Lines.Strings [1]+qtext[j].Lines.Strings [2];
qr_tqy.Qy2.close;
qr_tqy.Qy2.sql.clear;
qr_tqy.qy2.SQL.Add('select 公司名称 from 企业基本资料 where 所在市县='+''''+sx+''''+'and 行业类别='+''''+trim(hy)+''''+' and 注册时间 >= '+''''+dt_1 +''''+'and 注册时间 <= '+''''+dt_2+'''');
if frm_t_qy.rb_cz.Checked =true then
begin
qr_tqy.qy2.SQL.Add('and 是否存在='+''''+'是'+'''');
end
else
if frm_t_qy.rb_bcz.Checked =true then
begin
qr_tqy.qy2.SQL.Add('and 是否存在='+''''+'否'+'''');
end;
qr_tqy.Qy2.Open;
count[j]:=inttostr(qr_tqy.Qy2.RecordCount );
pb.Position:=pb.Position+1;
end;
qr_tqy.Qy2.close;
qr_tqy.Qy2.SQL.Clear;
qr_tqy.Qy2.sql.Add('insert into tmp_enterprise values('+''''+sx+''''+','+count[0]+','+count[1]+',');
qr_tqy.Qy2.sql.add(count[2]+','+count[3]+','+count[4]+','+count[5]+','+count[6]+','+count[7]+',');
qr_tqy.Qy2.sql.add(count[8]+','+count[9]+','+count[10]+','+count[11]+','+count[12]+','+count[13]+','+count[14]+','+count[15]+','+count[16]+','+count[17]+','+count[18]+',0)');
qr_tqy.Qy2.ExecSQL ;
qr_tqy.Qy1.Next;
end;
qr_tqy.qdt1.Caption :=datetostr(dt1.Date );
qr_tqy.qdt2.Caption :=datetostr(dt2.Date );
qr_tqy.q_bt.Caption:=ed_bt.text;
qr_tqy.l_zbr.Caption :=frm_dl.dbcb.Text ;
for i:= 0 to 18 do
begin
e.Expression:='sum(table.value' +inttostr(i+1)+')';
pb.Position:=pb.Position+1;
end;
qr_tqy.table.Close;
qr_tqy.table.Open;
qr_tqy.PreviewModal ;
finally
qr_tqy.Free;
end;
close
end;
对了 问一下 要是想事项象XP里的图片缩略图那样的功能该怎么做呢 就是一个文件夹里所有的图片都可以看到小图 点其中一个再放大