📄 easy_gasmain.pas
字号:
Showmessage('数据备份成功!');
end;
procedure TMAINFORM.FormCreate(Sender: TObject);
begin
ADOC.ConnectionString:=ReadINIStr('网络设置','数据库连接字符','');
ADOC.Open;
ADOCOMM.Commandtext:='SET ANSI_NULLS OFF';
ADOCOMM.execute;
LOGIN.Execute;
end;
procedure TMAINFORM.CONExecute(Sender: TObject);
begin
EditConnectionString(ADOC);
WriteINIStr('本地设置','数据链接符',ADOC.ConnectionString);
end;
procedure TMAINFORM.SEtMANGTYPEExecute(Sender: TObject);
begin
With Tmangtypeset.Create(Application) do
Begin
TYPES.Open;
try
if showmodal=mrok then
With TYPES do
Begin
Edit;Post;
end else TYPES.Cancel;
finally
Free;
end;
end;
end;
procedure TMAINFORM.ClientSetExecute(Sender: TObject);
begin
With TClientDlg.Create(Application) do
Begin
MAIN.Open;
try
if showmodal=mrok then
With MAIN do
Begin
Edit;Post;
end else MAIN.Cancel;
finally
MAIN.Close;
Free;
end;
end;
end;
procedure TMAINFORM.MarkTickExecute(Sender: TObject);
begin
if Not ExistsMDI(Self,'ButtleList') then ButtleList:=TButtleList.create(Application) else ButtleList.Show;
With ButtleList do
Begin
MAIN.Open;
end;
end;
procedure TMAINFORM.AllfuncExecute(Sender: TObject);
begin
if Not ExistsMDI(Self,'ButtleDlg') then ButtleDlg:=TButtleDlg.create(Application) else ButtleDlg.Show;
end;
procedure TMAINFORM.BTINFOExecute(Sender: TObject);
begin
With TButtleEditor.Create(Application) do
Begin
BUTTLE.Open;
try
DATAS.DataSet:=BUTTLE;
With Datas.DataSet do
if showmodal=mrok then
Begin
Edit;
Post;
end else Cancel;
finally
free;
end;
end;
end;
procedure TMAINFORM.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=Self.MDIChildCount<=1;
end;
procedure TMAINFORM.SELLGASExecute(Sender: TObject);
begin
SellTick(nil);
end;
procedure TMAINFORM.AboutExecute(Sender: TObject);
begin
With TPREForm.create(Self) do
Begin
Show;
end;
end;
Procedure MarkReport(R_Caption,SQL:String;SumList:String='';CountList:String='');
var Sums,counts:TStrings;
I:Integer;
Begin
Wait:=TWaitDlg.Create(Application);
Wait.show;
Wait.Repaint;
Application.ProcessMessages;
Sums:=GetListFromText(SumList);
counts:=getlistfromtext(countlist);
try
With TReportDlg.create(Application) do
Begin
Caption:=R_Caption;
MAIN.CommandText:=SQL;
MAIN.Open;
for I:=0 to Sums.Count-1 do
begin
if GetColFromName(DBG,SUMS.Strings[I])<>nil then
GetColFromName(DBG,SUMS.Strings[I]).Footer.ValueType:=fvtSum;
end;
for I:=0 to counts.Count-1 do
begin
if GetColFromName(DBG,counts.Strings[I])<>nil then
GetColFromName(DBG,counts.Strings[I]).Footer.ValueType:=fvtCount;
end;
DBG.SumList.Active:=True;
end;
finally
counts.free;
sums.free;
Wait.free;
end;
end;
procedure TMAINFORM.LOSTCUExecute(Sender: TObject);
begin
MarkReport(TAction(Sender).Caption,'SELECT 瓶身码, 钢瓶类型,灌装规格,客户姓名, 区域, 地点, CONVERT([int],托管到期 - { fn NOW() }) AS 托管欠费天数, CONVERT(int, 年审到期 - { fn NOW() })'+
' AS 年审欠费天数,押金, 操作日期 AS 最后交费日期, 报废时间 FROM GAS_BOTTLE WHERE (convert(datetime,托管到期)<{fn Now()}) or (convert(datetime,年审到期)<{fn Now()})');
end;
procedure TMAINFORM.MANGReportExecute(Sender: TObject);
begin
With TTimeSel.Create(Application) do
Begin
try
if Showmodal=mrok then
Begin
MarkReport(TAction(Sender).Caption,'SELECT GAS_MANAGE.票号, GAS_MANAGE.钢瓶编码, GAS_BOTTLE.钢瓶类型,GAS_BOTTLE.灌装规格, GAS_BOTTLE.客户姓名,GAS_MANAGE.操作日期 as 开单日期, GAS_BOTTLE.区域,'+
'GAS_BOTTLE.地点, GAS_MANAGE.操作类型 AS 收费项目,操作值 as 收费金额, GAS_MANAGE.有效天数,GAS_MANAGE.操作员, GAS_MANAGE.银行, GAS_MANAGE.银行名称 FROM GAS_MANAGE INNER JOIN GAS_BOTTLE ON GAS_MANAGE.钢瓶编码 = GAS_BOTTLE.编码'+
' WHERE GAS_MANAGE.操作日期 >convert(datetime,'+#39+DateTimeToStr(Start)+#39+') and GAS_MANAGE.操作日期<convert(Datetime,'+#39+DateTimeToStr(Ending)+#39+') ORDER BY 区域,地点,银行','收费金额,有效天数');
end;
finally
free;
end;
end;
end;
procedure TMAINFORM.LOGINExecute(Sender: TObject);
label Fin;
begin
With TLoginDlg.create(Application) do
Begin
try
USERS.Open;
if showmodal=mrok then
begin
if USERS.Locate('姓名',USERNAMEEdit.text,[]) then
Begin
if UNPassword(USERS.FieldByName('密码').AsString)=PASSWORDEDIT.Text then
Begin
USER.Name:=USERNAMEEDIT.Text;
USER.No:=USERS.fieldbyname('序号').AsInteger;
USER.CTRLS:=TStringList.Create;
USER.CTRLS.Assign(TBlobField(USERS.Fieldbyname('权限')));
Goto Fin;
end else Showmessage('密码错误!');
end else Showmessage('用户名错误!');
end;
Halt;
Fin:
finally
free;
end;
end;
end;
procedure TMAINFORM.CloseFmtExecute(Sender: TObject);
begin
Close;
end;
procedure TMAINFORM.CloseFmtUpdate(Sender: TObject);
begin
TAction(Sender).Enabled:=Self.MDIChildCount=1;
end;
procedure TMAINFORM.INSELLREPExecute(Sender: TObject);
begin
With TTimeSel.Create(Application) do
Begin
try
if Showmodal=mrok then
Begin
MarkReport(TAction(Sender).Caption,'SELECT MAX(单据类型) as 单据类型,sum(数量) as 总销售数量,sum(金额) as 总销售金额 FROM GAS_SELL WHERE 操作日期 >convert(datetime,'+#39+DateTimeToStr(Start)+#39+') and 操作日期<convert(Datetime,'+#39+DateTimeToStr(Ending)+#39+') '+'GROUP BY 单据类型 ','总销售金额,总销售数量');
end;
finally
free;
end;
end;
end;
procedure TMAINFORM.BANKSETExecute(Sender: TObject);
begin
With TBANKDLG.create(Application) do
Begin
try
BANKS.open;
if showmodal=mrok then
Begin
BANKS.edit;
BANKS.post;
end else BANKS.cancel;
finally
free;
end;
end;
end;
procedure TMAINFORM.ClearDataExecute(Sender: TObject);
var I:Integer;
begin
if MessageBox(Handle,'清除后无法恢复!是否继续?','警告!',MB_YESNO)=ID_NO then Exit;
With TCheckListDlg.create(Application) do
Begin
try
ADOC.GetTableNames(CList.Items);
if showmodal=mrok then
For I:=0 to CList.items.Count-1 do
begin
if CList.Checked[I] then
Begin
ADOCOMM.CommandText:='TRUNCATE TABLE '+CList.Items.Strings[I];
ADOCOMM.Execute;
Info:=CList.Items.Strings[I]+'清除完毕!';
end;
end;
finally
free;
end;
end;
end;
procedure TMAINFORM.DelayTimerTimer(Sender: TObject);
begin
if FHintDelay>0 then FHintDelay:=FHintDelay-1;
if FHintDelay=0 then
Begin
Info:='';
DelayTimer.Enabled:=False;
end;
end;
Procedure SellTick(BUTTLE:TADODataset);
Begin
With TSellDlg.create(Application) do
Begin
try
SELLTICK.Open;
SELLTYPE.open;
BANK.open;
CLIENT.open;
SELLTICK.append;
SELLTICK.edit;
if BUTTLE<>nil then
Begin
SELLTICK.FieldByName('钢瓶编码').AsInteger:=BUTTLE.fieldbyname('编码').asInteger;
SELLTICK.FieldByName('钢瓶类型').AsString:=BUTTLE.fieldbyname('钢瓶类型').asString;
SELLTICK.FieldByName('数量').AsFloat:=BUTTLE.fieldbyname('灌装规格').AsFloat;
SELLTICK.FieldByName('灌装规格').AsFloat:=BUTTLE.fieldbyname('灌装规格').AsFloat;
end;
if showmodal=mrok then
Begin
SELLTICK.Edit;
SELLTICK.Post;
if SELLTICK.fieldbyname('运算').AsString='-' then
Begin
SELLTICK.Edit;
SELLTICK.FieldByName('数量').AsFloat:=-abs(SELLTICK.FieldByName('数量').AsFloat);
SELLTICK.Post;
end;
end else SELLTICK.Cancel;
finally
free;
end;
end;
end;
procedure TMAINFORM.DSELLREPExecute(Sender: TObject);
begin
With TTimeSel.Create(Application) do
Begin
try
if Showmodal=mrok then
Begin
MarkReport(TAction(Sender).Caption,'SELECT * FROM GAS_SELL WHERE 操作日期 >convert(datetime,'+#39+DateTimeToStr(Start)+#39+') and 操作日期<convert(Datetime,'+#39+DateTimeToStr(Ending)+#39+') '+'ORDER BY 单据类型 ','金额,数量');
end;
finally
free;
end;
end;
end;
procedure TMAINFORM.MANAGETYPEREPExecute(Sender: TObject);
begin
With TTimeSel.Create(Application) do
Begin
try
if Showmodal=mrok then
Begin
MarkReport(TAction(Sender).Caption,'SELECT MAX(归属) as 管理类型,count(归属) as 瓶数 ,sum(有效天数) as 有效天数,sum(操作值) as 总金额 from GAS_MANAGE WHERE 操作日期 >convert(datetime,'+#39+DateTimeToStr(Start)+#39+') and 操作日期<convert(Datetime,'+#39+DateTimeToStr(Ending)+#39+') '+'GROUP BY 归属 ORDER BY 总金额','瓶数,有效天数,总金额');
end;
finally
free;
end;
end;
end;
// GROUP BY 银行
procedure TMAINFORM.MANGBANKREPExecute(Sender: TObject);
begin
With TTimeSel.Create(Application) do
Begin
try
if Showmodal=mrok then
Begin
MarkReport(TAction(Sender).Caption,'SELECT MAX(银行名称) as 银行名称,count(银行)as 单据数量,SUM(操作值)as 总金额 FROM GAS_MANAGE WHERE 操作日期 >convert(datetime,'+#39+DateTimeToStr(Start)+#39+') and 操作日期<convert(Datetime,'+#39+DateTimeToStr(Ending)+#39+') '+'GROUP BY 银行 ORDER BY 总金额','单据数量,总金额');
end;
finally
free;
end;
end;
end;
procedure TMAINFORM.SELLDATEREPExecute(Sender: TObject);
Const SQL = 'SELECT convert(varchar,datename(year,max(操作日期)),4)+'+#39+'-'+#39+'+convert(varchar,datename(month,max(操作日期)),4)+'+#39+'-'+#39+'+convert(varchar,datename(day,max(操作日期)),4) as 销售日期,MAX(银行名称) as 银行名称,count(银行)as 单据数量,SUM(操作值)as 总金额 FROM GAS_MANAGE %s GROUP BY convert(varchar,datename(year,操作日期),4)+'+#39+'-'+#39+'+convert(varchar,datename(month,操作日期),4)+'+#39+'-'+#39+'+convert(varchar,datename(day,操作日期),4),银行 ORDER BY 销售日期';
begin
With TTimeSel.Create(Application) do
Begin
try
if Showmodal=mrok then
Begin
MarkReport(TAction(Sender).Caption,Format(SQL,['WHERE 操作日期 >convert(datetime,'+#39+DateTimeToStr(Start)+#39+') and 操作日期<convert(Datetime,'+#39+DateTimeToStr(Ending)+#39+')']),'单据数量,总金额');
end;
finally
free;
end;
end;
end;
procedure TMAINFORM.LOSTBOTTLEExecute(Sender: TObject);
const SQL = 'SELECT MAX(GAS_BOTTLE.编码) AS 编码, MAX(GAS_BOTTLE.钢瓶类型) AS 钢瓶类型,MAX(GAS_BOTTLE.区域) AS 区域, MAX(GAS_BOTTLE.地点) AS 地点,MAX(GAS_BOTTLE.出厂时间)'+
' AS 出厂时间, MAX(GAS_BOTTLE.报废时间) AS 报废时间, SUM(GAS_SELL.金额) AS 总销售金额, ABS(SUM(GAS_SELL.数量)) AS 销售量,count(GAS_SELL.钢瓶编码) as 开单数 FROM GAS_SELL INNER JOIN'+
' GAS_BOTTLE ON GAS_SELL.钢瓶编码 = GAS_BOTTLE.编码 AND GAS_BOTTLE.报废时间 <> NULL AND GAS_BOTTLE.报废时间<convert(datetime,%s) GROUP BY GAS_SELL.钢瓶编码';
begin
With TTimeSel.Create(Application) do
Begin
try
DateEnd.Enabled:=False;
if Showmodal=mrok then
Begin
MarkReport(TAction(Sender).Caption,Format(SQL,[#39+DateTimeToStr(Start)+#39]),'');
end;
finally
free;
end;
end;
end;
procedure TMAINFORM.SELLTOPExecute(Sender: TObject);
const SQL = 'SELECT MAX(GAS_BOTTLE.编码) AS 编码, MAX(GAS_BOTTLE.钢瓶类型) AS 钢瓶类型,MAX(GAS_BOTTLE.区域) AS 区域, MAX(GAS_BOTTLE.地点) AS 地点,MAX(GAS_BOTTLE.出厂时间)'+
' AS 出厂时间, MAX(GAS_BOTTLE.报废时间) AS 报废时间, SUM(GAS_SELL.金额) AS 总销售金额, ABS(SUM(GAS_SELL.数量)) AS 销售量,count(GAS_SELL.钢瓶编码) as 开单数 FROM GAS_SELL INNER JOIN'+
' GAS_BOTTLE ON GAS_SELL.钢瓶编码 = GAS_BOTTLE.编码 GROUP BY GAS_SELL.钢瓶编码 ORDER BY 总销售金额 DESC';
begin
MarkReport(TAction(Sender).Caption,SQL,'');
end;
procedure TMAINFORM.SETUSERExecute(Sender: TObject);
begin
if Not ExistsMDI(Self,'USERDlg') then USERDlg:=TUSERDlg.create(Application) else USERDlg.Show;
end;
Procedure TMAINFORM.MyWINMENUCLICK(SENDER:TOBJECT);
var I:Integer;
BEgin
For I:=0 to Self.MDIChildCount-1 do
Begin
if Self.MDIChildren[I].name=TMenuItem(Sender).Hint then
Begin
MDIChildren[I].Show;
Break;
end;
end;
end;
procedure TMAINFORM.W1Click(Sender: TObject);
var MENU:TMENUITEM;
I:Integer;
begin
WINMENU.Clear;
For I:=0 to Self.MDIChildCount-1 do
Begin
MENU:=TMenuItem.Create(WINMENU);
MENU.Caption:=Self.MDIChildren[I].Caption;
MENU.Hint:=Self.MDIChildren[I].Name;
MENU.ImageIndex:=40;
MENU.OnClick:=MyWINMENUCLICK;
WINMENU.Add(MENU);
end;
end;
Function GetQX(QX:String):Boolean;
Begin
Result:= (USER.CTRLS<>nil) and (USER.CTRLS.IndexOf(QX)>-1);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -