📄 selbill1.pas
字号:
unit selBill1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, Grids, DBGridEh, ExtCtrls,adodb,db;
type
TdlgSelBill1 = class(TForm)
PanelCondition: TPanel;
Panel1: TPanel;
cmdExit: TSpeedButton;
cmdFilter: TSpeedButton;
cmdOk: TSpeedButton;
dbGrid1: TDBGridEh;
procedure FormShow(Sender: TObject);
procedure cmdExitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure cmdFilterClick(Sender: TObject);
procedure cmdOkClick(Sender: TObject);
private
{ Private declarations }
FSql:string;
FTablename:string;
sQueryCode:string;
public
{ Public declarations }
property xSql:string read FSql write FSql;
property xTableName:string read FTableName write FTableName;
end;
var
dlgSelBill1: TdlgSelBill1;
implementation
uses datamodule1, search;
{$R *.dfm}
procedure TdlgSelBill1.FormShow(Sender: TObject);
var
tmpStream:TADOBlobStream;
dLastMonth:TDateTime;
ssql:string;
begin
dLastMonth:=dataE2.GetLastMonth(date);
dbGrid1.DataSource :=Nil ;
panelCondition.caption:=' 查询条件:[ '+'开单日期: '+dateTostr(dLastMonth)+'至'+dateTostr(date)+' ]';
// read blob field
if dataE2.OpenTable('select * from queryModule where upper(ModuleCode)= :ModuleCode',xTableName) then
begin
tmpStream := TADOBlobStream.Create(DataE2.adoQuery1.FieldByName('GridColumns') as TBlobField, bmRead);
xSql:=dataE2.ADOQuery1.fieldbyname('Sql1').asstring+' '+dataE2.ADOQuery1.fieldbyname('Sql2').asstring;
sQueryCode:=Trim(dataE2.ADOQuery1.fieldbyname('queryCode').asstring);
dataE2.ADOQuery1.close; end
else exit;
try
tmpStream.Position :=0;
try
dbGrid1.Columns.LoadFromStream(tmpStream); //load columns from gridcolumns
except
dbGrid1.Columns.clear;
end;
finally
tmpStream.Free ;
end;
//:Cdn 动态SQL代替此串
//sSql:=StringReplace(xsql,':Cdn',' where Billdate between :billdate and :billdate1',[rfIgnoreCase]);
sSql:=' where Billdate between '''+dateTostr(dLastMonth)+''' and '''+dateTostr(date)+''''; //dateTimeTostr(now)+''''
with dataE2 do
begin
if QueryRpt.active then QueryRpt.Close;
QueryRpt.close;
QueryRpt.sql.clear;
QueryRpt.sql.add(xsql);
queryRpt.Parameters[0].value:=sSql;
//queryRpt.Parameters[0].value:=dLastMonth;
//queryRpt.Parameters[1].value:=date;
QueryRpt.open;
end;
dbGrid1.DataSource :=dataE2.dsRpt ;
end;
procedure TdlgSelBill1.cmdExitClick(Sender: TObject);
begin
modalResult:=mrNone;
close;
end;
procedure TdlgSelBill1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
dataE2.QueryRpt.close;
dbGrid1.DataSource :=nil ;
end;
procedure TdlgSelBill1.cmdFilterClick(Sender: TObject);
var
sSql:string;
begin
schConditionForm.xTableName:=xTableName;
schConditionForm.xQueryCode:=sQueryCode;
if schConditionForm.showmodal=mrOk then
begin
//动态字段
sSql:=schConditionForm.xSql;
//sql为空时,默认为>'2000-01-01';
if sSql='' then sSql:=' where Billdate > '''+'2000-01-01''';
//:Cdn 动态SQL代替此串
//sSql:=StringReplace(xsql,':Condition',sSql,[rfIgnoreCase]);
with dataE2 do
begin
if QueryRpt.active then QueryRpt.Close;
queryRpt.Parameters[0].value:=sSql;
QueryRpt.open;
end;
end;
end;
procedure TdlgSelBill1.cmdOkClick(Sender: TObject);
begin
dataE2.nBillId :=dataE2.queryRpt.fieldbyname('BillId').asinteger;
dataE2.QueryRpt.Close;
modalResult:=mrOk;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -