u_search.pas

来自「Delphi 应用举例」· PAS 代码 · 共 157 行

PAS
157
字号
unit u_search;
{PUBDIST}

interface

uses
  IWAppForm, IWApplication, IWTypes, IWCompMemo, IWCompCheckbox, Classes,
  Controls, IWControl, IWCompEdit, IWCompButton, IWDBStdCtrls, IWGrids,
  IWDBGrids, Forms, u_Frame, U_frame_head, IWCompRectangle, ExcelXP,
  OleServer;

type
  TformMainSearch = class(TIWAppForm)
    IWEditY: TIWEdit;
    IWChkBxY: TIWCheckBox;
    IWChkBxM: TIWCheckBox;
    IWEditM: TIWEdit;
    IWChkBxD: TIWCheckBox;
    IWEditD: TIWEdit;
    IWButton1: TIWButton;
    IWDBGrid1: TIWDBGrid;
    IWDBMemo1: TIWDBMemo;
    Frame21: TFrame2;
    IWRectangle1: TIWRectangle;
    Frame31: TFrame3;
    IWButton2: TIWButton;
    ExcelApplication1: TExcelApplication;
    ExcelWorkbook1: TExcelWorkbook;
    ExcelWorksheet1: TExcelWorksheet;
    IWCheckBoxExcel: TIWCheckBox;
    procedure IWButton1Click(Sender: TObject);
    procedure IWDBGrid1Columns0Click(ASender: TObject;
      const AValue: String);
    procedure IWAppFormCreate(Sender: TObject);
    procedure IWButton2Click(Sender: TObject);
  public
    function isGoodNumber(s:string):boolean;
  end;


  function change_postfix(s,postfix:string):string;

implementation
{$R *.dfm}

uses
  ServerController,datamoduleUnit,SysUtils,db,Variants,IWServerControllerBase,u_report;
function change_postfix(s,postfix:string):string;
var i:integer;
begin
    i:=pos('.',s);
    result:=copy(s,1,i)+postfix;
end;
procedure TformMainSearch.IWButton1Click(Sender: TObject);
var s,ss:string;
   bln:boolean;
begin
    bln:=IWChkBxY.Checked or IWChkBxm.Checked or IWChkBxD.Checked;
    s:='select * from demo_msg where UserID='''+Usersession.userID+'''';
    if  bln then begin
        ss:='';
        if (IWChkBxY.Checked) and isGoodNumber(IWEditY.Text) then  ss:=ss+' and fyear='+IWEditY.Text;
        if (IWChkBxM.Checked) and isGoodNumber(IWEditM.Text) then  ss:=ss+' and fmonth='+IWEditM.Text;
        if (IWChkBxD.Checked) and isGoodNumber(IWEditD.Text) then  ss:=ss+' and fday='+IWEditD.Text;
        if s<>'' then begin
           s:=s+ss;
        end;
    end;
    with datamodule1.Qry_search do begin
        close;
        sql.Clear;
        sql.Text:=s;
        open;
    end;



end;
function TformMainSearch.isGoodNumber(s:string):boolean;
var i:integer;
begin
    result:=false;
    if s='' then exit;
    result:=TryStrToInt(s,i);
end;
procedure TformMainSearch.IWDBGrid1Columns0Click(ASender: TObject;
  const AValue: String);
begin
  with datamodule1.Qry_search do begin
     MoveBy(StrToInt(AValue)-RecNo);
  end;
end;

procedure TformMainSearch.IWAppFormCreate(Sender: TObject);
begin
    Frame31.lbluser.Caption:='当前用户:'+Usersession.userID;
    Frame31.lblCount.Caption:='在线用户数:'+IntToStr(UserOnLine);
end;

procedure TformMainSearch.IWButton2Click(Sender: TObject);
var s:string;
    obj:_WorkSheet;
    ds:Tdataset;
    r,i,c:integer;
begin
   try
       ExcelApplication1.Connect;
       ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
       ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _worksheet);
   except
       webapplication.ShowMessage('服务器端excel启动失败!');
   end;
   //------------------------------------

    ds:=datamodule1.Qry_search;
    with ExcelWorksheet1.Cells do begin
         cells.Item[1,1]:='资料管理中心报表(查询结果)';
         cells.Item[2,1]:=datetoStr(now);
         for i:=0 to ds.FieldCount -1 do
             cells.Item[3,i+1]:=ds.fields[i].DisplayLabel;
         r:=4;
         ds.First;
         repeat
            for i:=0 to ds.FieldCount -1 do
                Cells.Item[r,i+1]:=ds.fields[i].Value;
            r:=r+1;
            ds.Next;
         until ds.Eof;
    end;

    s:=GServerController.NewCacheFile('excel');
    //ExcelApplication1.Visible[0]:=True;
    s:=change_postfix(s,'xls');
    if FileExists(s) then DeleteFile(s);
    ExcelWorkSheet1.SaveAs(s);
    ExcelWorkSheet1.Disconnect;
    ExcelWorkbook1.Disconnect;
    ExcelApplication1.quit;

    s:=WebApplication.URLBase + '/cache/' + ExtractFilename(s);
    if IWCheckBoxExcel.Checked then begin
        //s:='NewWindow("'+s+'", "","resizable=yes,toolbar=yes,scrollbars=yes");';
        s:='NewWindow("'+s+'", "","");';
        self.AddToInitProc(s);
    end else begin
        with TformMainReport.Create(webapplication) do
        begin
             IWframe1.src:=s;
             show;
        end;
        free;
    end;

end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?