H
hawlj
Unregistered / Unconfirmed
GUEST, unregistred user!
在下写一个学籍管理程序采用delphi5自带的ADO数据库连接ACCESS文件
学籍数据库结构如下:
xh学号:
zh座号:(如:C020101)表示初中2002年入学的一班1号学生
xm姓名:
bd学籍变动:(1,2,3,4,5……分别表示辍学,留级……)
……
统计表数据结构如下:
rd:年段
bj:班级
zrs:总人数
……
BjList:array[1..6] of TStringList;分别表示初一年至高三年的班级名称及班级代号。
现要做一个学校学生情况统计表作如下程序程序,虽然运行正确但运行需将近一分钟。
求各位大虾帮帮忙:
procedure TDM1.Getqxsxtjb;
var
i,j:integer;
sqls,tmpS:string;
tmpADOQuery:TADOQuery;
oldcur:tcursor;
begin
oldcur:=Screen.Cursor;
screen.cursor :=crHourGlass;
tmpADOQuery:=TADOQuery.Create(Self);
tmpADOQuery.Connection:=ADOConnection1;
with tmpADOQuery do begin
SQL.Add('Delete from qxxstjb');
ExecSQL;
Close;
end;
try
With DStj do begin
close;
CommandText:='select * from qxxstjb';
open;
end;
for i:=1 to 6 do begin
for j:=0 to BjList.Count-1 do begin
tmpS:=bjList.Values[bjList.Names[j]];
sqls:='select count(*) from xsda where ';
sqls:= sqls + ' ' + prockeyword('zh',tmpS, 'and');
tmpADOQuery.SQL.Clear;
tmpADOQuery.SQL.Add(sqls);
tmpADOQuery.Open;
with DStj do begin
Append;
fieldbyname('rd').AsString:=RD;
fieldbyname('bj').AsString:=bjList.Names[j];
fieldbyname('zrs').Asinteger:=tmpADOQuery.Fields[0].Value;//总人数
Post;
end;
tmpADOQuery.Close;
……
end;
end;
finally
tmpADOQuery.Free;
screen.cursor :=oldcur;
end;
end;
学籍数据库结构如下:
xh学号:
zh座号:(如:C020101)表示初中2002年入学的一班1号学生
xm姓名:
bd学籍变动:(1,2,3,4,5……分别表示辍学,留级……)
……
统计表数据结构如下:
rd:年段
bj:班级
zrs:总人数
……
BjList:array[1..6] of TStringList;分别表示初一年至高三年的班级名称及班级代号。
现要做一个学校学生情况统计表作如下程序程序,虽然运行正确但运行需将近一分钟。
求各位大虾帮帮忙:
procedure TDM1.Getqxsxtjb;
var
i,j:integer;
sqls,tmpS:string;
tmpADOQuery:TADOQuery;
oldcur:tcursor;
begin
oldcur:=Screen.Cursor;
screen.cursor :=crHourGlass;
tmpADOQuery:=TADOQuery.Create(Self);
tmpADOQuery.Connection:=ADOConnection1;
with tmpADOQuery do begin
SQL.Add('Delete from qxxstjb');
ExecSQL;
Close;
end;
try
With DStj do begin
close;
CommandText:='select * from qxxstjb';
open;
end;
for i:=1 to 6 do begin
for j:=0 to BjList.Count-1 do begin
tmpS:=bjList.Values[bjList.Names[j]];
sqls:='select count(*) from xsda where ';
sqls:= sqls + ' ' + prockeyword('zh',tmpS, 'and');
tmpADOQuery.SQL.Clear;
tmpADOQuery.SQL.Add(sqls);
tmpADOQuery.Open;
with DStj do begin
Append;
fieldbyname('rd').AsString:=RD;
fieldbyname('bj').AsString:=bjList.Names[j];
fieldbyname('zrs').Asinteger:=tmpADOQuery.Fields[0].Value;//总人数
Post;
end;
tmpADOQuery.Close;
……
end;
end;
finally
tmpADOQuery.Free;
screen.cursor :=oldcur;
end;
end;