📄 unitprtach.pas.~24~
字号:
unit UnitPrtAch;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, frxClass, frxDBSet, frxIBXComponents, StdCtrls, Buttons, CheckLst,
frxExportRTF;
type
TfmPrtAch = class(TForm)
frxDBDataset1: TfrxDBDataset;
frxIBXComponents1: TfrxIBXComponents;
BitBtn1: TBitBtn;
SchoolList: TCheckListBox;
BitBtn2: TBitBtn;
frxRTFExport1: TfrxRTFExport;
frxReport1: TfrxReport;
function frxReport1UserFunction(const MethodName: string;
var Params: Variant): Variant;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function mycount(School,condition:string):integer;//统计函数
end;
implementation
uses unitDatamodule, UnitSchoolManager;
{$R *.dfm}
procedure TfmPrtAch.FormCreate(Sender: TObject);
var
sm:TSchoolManager;
i:Integer;
begin
sm:=TSchoolManager.Create;
sm.SchoolList(SchoolList.Items);
for i:=0 to SchoolList.Items.Count-1 do
SchoolList.Checked[i]:=true;
sm.Free;
frxReport1.AddFunction('function mycount(school,condition:string):Integer');
end;
procedure TfmPrtAch.BitBtn1Click(Sender: TObject);
var
i,cnt:Integer;
mysql:String;
begin
cnt:=0;
mysql:='';
for i:=0 to SchoolList.Items.Count-1 do
begin
if SchoolList.Checked[i]=true then
cnt:=cnt+1;
end;
case cnt of
0:
begin
Application.MessageBox('您至少必需选择一所学校!','提示',MB_OK or MB_ICONWARNING);
exit;
end;
else
begin
for i:=0 to SchoolList.Items.Count-1 do
begin
if SchoolList.Checked[i]=true then
mysql:=mysql+' or b.school='''+SchoolList.Items[i]+'''';
end;
mysql:='select b.school,b.stdname,a.bmh,a.zkzh,a.yuwen1,a.yuwen2,a.shuxue,'+
'a.yingyu from achieve a,student b where (a.bmh=b.bmh) and ('+
copy(mysql,5,Length(mysql)-4)+') order by a.bmh';
end;
end;
dm.Trans1.Active:=false;
dm.Query1.Close;
dm.Query1.SQL.Text:=mysql;
dm.Query1.Open;
frxReport1.ShowReport();
end;
function TfmPrtAch.mycount(School,condition: string): integer;
begin
dm.Query2.Close;
dm.Query2.SQL.Text:='select count(a.*) as mycnt from achieve a,student b where '+
'a.bmh=b.bmh and b.school='''+school+''' and '+condition;
// showmessage(adoquery1.SQL.Text); //调试用语句
dm.Query2.Open;
result:=dm.Query2.fieldbyname('mycnt').AsInteger;
end;
function TfmPrtAch.frxReport1UserFunction(const MethodName: string;
var Params: Variant): Variant;
begin
if AnsiCompareText('mycount', MethodName) = 0 then
result:=mycount(Params[0],Params[1]);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -