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 + -
显示快捷键?