⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitprtach.pas.~24~

📁 初中成绩录入系统网络版(firebird) firebird下的网络编程
💻 ~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 + -