📄 earning.pas
字号:
unit Earning;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, ComCtrls, StdCtrls, Buttons, DBCtrls, Mask,
ExtCtrls, DB, ADODB, RpCon, RpConDS, RpBase, RpSystem, RpDefine, RpRave;
type
TForm_Earning = class(TForm)
Panel1: TPanel;
Label2: TLabel;
Label3: TLabel;
Bevel1: TBevel;
DBE_event: TDBEdit;
DBE_money: TDBEdit;
Panel2: TPanel;
AddBtn: TBitBtn;
EdtBtn: TBitBtn;
DelBtn: TBitBtn;
SaveBtn: TBitBtn;
CancelBtn: TBitBtn;
ExtBtn: TBitBtn;
DBGrid1: TDBGrid;
ADOQ_Earning: TADOQuery;
ADOQ_Operator: TADOQuery;
ADOQ_Operatortmp_id: TAutoIncField;
ADOQ_Operatoroperid: TStringField;
ADOQ_Operatoropername: TStringField;
ADOQ_Operatorpassword: TStringField;
ADOQ_Operatorteam_id: TIntegerField;
DS_Earning: TDataSource;
ADOQ_Earningearn_id: TAutoIncField;
ADOQ_Earningmoney: TFloatField;
ADOQ_Earningrec_date: TDateTimeField;
ADOQ_Earningtmp_id: TIntegerField;
ADOQ_Earningflag: TStringField;
ADOQ_Earningopername: TStringField;
LocateBtn: TBitBtn;
Panel3: TPanel;
Label1: TLabel;
Label14: TLabel;
OKBtn: TBitBtn;
EndBtn: TBitBtn;
GroupBox6: TGroupBox;
Label31: TLabel;
Label32: TLabel;
Sdate: TDateTimePicker;
Edate: TDateTimePicker;
Label24: TLabel;
Edit_event: TEdit;
Label28: TLabel;
ComBox_opeid: TComboBox;
ADOQtmp: TADOQuery;
PrtBtn: TBitBtn;
Bevel3: TBevel;
Bevel4: TBevel;
Bevel5: TBevel;
GroupBox1: TGroupBox;
ComboBox1: TComboBox;
Edit1: TEdit;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
Edit2: TEdit;
Bevel2: TBevel;
ADOQ_Earningtjflag: TBooleanField;
ADOQ_Earningevent: TStringField;
RvProject1: TRvProject;
RvSystem1: TRvSystem;
Rv_Etp_Earning: TRvDataSetConnection;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure AddBtnClick(Sender: TObject);
procedure EdtBtnClick(Sender: TObject);
procedure DelBtnClick(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure DS_EarningStateChange(Sender: TObject);
procedure LocateBtnClick(Sender: TObject);
procedure EndBtnClick(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure ADOQ_EarningAfterInsert(DataSet: TDataSet);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure PrtBtnClick(Sender: TObject);
procedure ADOQ_EarningAfterPost(DataSet: TDataSet);
private
{ Private declarations }
s_date, e_date:string;
procedure refreshdb;
public
{ Public declarations }
end;
var
Form_Earning: TForm_Earning;
implementation
uses sharevar, sharefun, data, Main;
{$R *.dfm}
procedure TForm_Earning.refreshdb;
begin
with ADOQ_Operator do begin close; open; end;
with ADOQ_Earning do
begin
sql.Strings[1]:='';
sql.Strings[2]:='order by rec_date';
try
execsql;
open;
except
msgErr(handle,'刷新数据库失败!(Earning_Q)');
end;
end;
end;
procedure TForm_Earning.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if adoq_operator.Active then adoq_operator.Close;
if adoq_earning.Active then adoq_earning.Close;
action:=cafree;
end;
procedure TForm_Earning.AddBtnClick(Sender: TObject);
begin
if not adoq_earning.Active then exit;
if adoq_earning.State in [dsinsert, dsedit] then exit;
if Panel3.Visible then Panel3.Visible:=false;
adoq_earning.Append;
end;
procedure TForm_Earning.EdtBtnClick(Sender: TObject);
begin
if not adoq_earning.Active then exit;
if adoq_earning.State in [dsinsert, dsedit] then exit;
if adoq_earning.RecordCount<1 then exit;
if adoq_earning.FieldValues['Flag']='T' then
begin
msgok(handle,'该条记录为系统自动生成致不可进行编辑!(以确保数据的安全性)');
exit;
end;
if adoq_earning.FieldValues['tjflag'] then
begin
MsgErr(handle,'该条记录已统计入总账表,致不可进行编辑!(以确保数据的安全性)');
exit;
end;
if Panel3.Visible then Panel3.Visible:=false;
adoq_earning.edit;
end;
procedure TForm_Earning.DelBtnClick(Sender: TObject);
var
tmp_event: string;
begin
with adoq_earning do
begin
if not active then exit;
if RecordCount<1 then exit;
if State in [dsinsert, dsedit] then exit;
if FieldValues['Flag']='T' then
begin
msgok(handle,'该条记录为系统自动生成致不可删除!(以确保数据的安全性)');
exit;
end;
if FieldValues['tjflag'] then
begin
MsgErr(handle,'该条记录已统计入总账表,致不可进行编辑!(以确保数据的安全性)');
exit;
end;
tmp_event:=fieldvalues['event'];
if MsgQst(handle,'确定删除事由: [ '+tmp_event+' ] 相关的企业的收入记录吗?') =IDNO then exit;
try
delete;
except
MsgErr(handle,'当前数据在相关连的表中用到,不能删除!');
exit;
end;
end;
end;
procedure TForm_Earning.SaveBtnClick(Sender: TObject);
var
tmp_id:integer;
info:string;
begin
if not adoq_earning.Active then exit ;
if not (adoq_earning.State in [dsinsert, dsedit]) then exit;
if dbe_event.Text='' then
begin
msgok(handle,'收入事由不能为空!');
dbe_event.SetFocus;
exit;
end;
if adoq_earning.fieldvalues['money']<=0 then
begin
msgok(handle,'请输入正确的收入金额!');
dbe_money.SetFocus;
exit;
end;
if not ToMoney(floattostr(adoq_earning.fieldvalues['money']),info) then
begin
MsgErr(handle,'金额格式不对[0.00]!');
dbe_money.SetFocus; abort; exit;
end;
if adoq_earning.State in [dsedit] then
begin
if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
begin
MsgOk(handle,'操作失败,请重试!');
exit;
end;
adoq_earning.FieldValues['tmp_id']:=tmp_id;
end;
if adoq_earning.State in [dsinsert] then
begin
if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
begin
MsgOk(handle,'操作失败,请重试!');
exit;
end;
adoq_earning.FieldValues['tmp_id']:=tmp_id;
adoq_earning.FieldValues['flag']:='F';
end;
try
adoq_earning.Post;
except
msgErr(handle, '数据库操作失败!(Earning_Q)');
exit;
end;
end;
procedure TForm_Earning.CancelBtnClick(Sender: TObject);
begin
if not adoq_earning.Active then exit;
if not (adoq_earning.State in [dsinsert, dsedit]) then exit;
adoq_earning.Cancel;
end;
procedure TForm_Earning.DS_EarningStateChange(Sender: TObject);
begin
if (Sender as Tdatasource).DataSet.State in [dsinsert,dsedit] then
begin
panel1.Height:=135;
DBE_event.Enabled:=true;
DBE_Money.Enabled:=true;
AddBtn.Enabled:=false;
EdtBtn.Enabled:=false;
DelBtn.Enabled:=false;
DBGrid1.Enabled:=FALSE;
Panel3.Visible:=false;
Panel3.Enabled:=true;
LocateBtn.Enabled:=false;
DBE_event.SetFocus;
end;
if (Sender as Tdatasource).DataSet.State in [dsbrowse] then
begin
Panel1.Height:=45;
DBE_event.Enabled:=false;
DBE_Money.Enabled:=false;
AddBtn.Enabled:=true;
EdtBtn.Enabled:=true;
DelBtn.Enabled:=true;
DBGrid1.Enabled:=TRUE;
LocateBtn.Enabled:=true;
end;
end;
procedure TForm_Earning.LocateBtnClick(Sender: TObject);
var
tmpdatetime:Tdatetime;
begin
if panel3.Visible then exit;
with ADOQtmp do
begin
close; sql.Clear;
sql.Add('select opername from operator');
open; first;
ComBox_opeid.Clear;
ComBox_opeid.Items.Add(' ');
while not eof do
begin
ComBox_opeid.items.Add(fieldvalues['opername']);
next;
end;
close;
end;
if panel1.Height=135 then panel1.Height:=45;
if not panel3.Visible then
begin
panel3.Enabled:=true;
panel3.Visible:=true;
//得到下单日期
GetHostDateTime(datamod.ADOCon,tmpdatetime);
edate.DateTime:=tmpdatetime;
Edit_event.Clear; ComBox_opeid.ItemIndex:=0;
Edit1.Clear; Edit2.Clear;
ExtBtn.Cancel:=false;
EndBtn.cancel:=true;
end;
end;
procedure TForm_Earning.EndBtnClick(Sender: TObject);
begin
Panel3.Enabled:=false;
Panel3.Visible:=false;
ExtBtn.Cancel:=true;
EndBtn.cancel:=false;
end;
procedure TForm_Earning.OKBtnClick(Sender: TObject);
var
tmpnum, tmpevent, tmp_operid, strwhere: string;
tmp_id:integer;
begin
if not ADOQ_Operator.Active then ADOQ_Operator.Open;
tmpevent:=trim(Edit_event.text);
tmp_operid:=trim(ComBox_opeid.Text);
tmpnum:=Getquery_char(ComboBox1.Text,trim(Edit1.Text),trim(ComboBox2.Text),ComboBox3.Text,trim(Edit2.Text),'money');
//得到查询的条件语句
begin
strwhere:='where (rec_date between :TmpStart and :TmpEnd )';
if tmp_operid<>'' then
begin
ADOQ_Operator.Locate('opername',tmp_operid,[]);
tmp_id:=adoq_operator.FieldValues['tmp_id'];
strwhere:=strwhere+' and (tmp_id=:tmp_id)';
end;
if tmpevent<>'' then
strwhere:=strwhere+' and (event like '+''''+'%'+tmp_operid+'%'+''''+')';
strwhere:=strwhere + tmpnum;
end;
with ADOQ_Earning do
begin
try
close;
sql.Strings[1]:=strwhere;
sql.Strings[2]:='order by rec_date,tmp_id,flag';
if tmp_operid<>'' then parameters.ParamValues['tmp_id']:=tmp_id;
parameters.ParamValues['TmpStart']:=strtodatetime(formatdatetime('yyyy-mm-dd',sdate.Date)+' 00:00:00');
parameters.ParamValues['TmpEnd']:=strtodatetime(formatdatetime('yyyy-mm-dd',edate.Date)+' 23:59:59');
open;
except
MsgErr(handle,'数据库检索失败(Fin_product_CK_Q)!');
refreshdb;
exit;
end;
PrtBtn.Enabled:=recordcount>0;
if recordcount>0 then
begin
s_date:=formatdatetime('yyyy-mm-dd',sdate.Date);
e_date:=formatdatetime('yyyy-mm-dd',edate.Date);
end;
end;
Panel3.Enabled:=false;
Panel3.Visible:=false;
ExtBtn.Cancel:=true;
EndBtn.cancel:=false;
end;
procedure TForm_Earning.ADOQ_EarningAfterInsert(DataSet: TDataSet);
begin
DataSet.FieldValues['money']:=0.00;
end;
procedure TForm_Earning.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9','.',#13,#8,#46]) then abort;
end;
procedure TForm_Earning.PrtBtnClick(Sender: TObject);
begin
if not ADOQ_Earning.Active then exit;
if ADOQ_Earning.RecordCount=0 then exit;
InitPage(RvProject1,RvSystem1,apppath+'\'+ReportName,apppath+'\'+ReportNdrName,0);
SelectPage(RvProject1,'Report1',7);
//传递参数
AddParameter(RvProject1,'sdate',s_date);
AddParameter(RvProject1,'edate',e_date);
AddParameter(RvProject1,'UserName',curAdmin.user_name);
AddParameter(RvProject1,'companyname',sysconfig.COMPANYANME);
//显示页
PageShow(RvProject1);
end;
procedure TForm_Earning.ADOQ_EarningAfterPost(DataSet: TDataSet);
var
earn_id:integer;
begin
with dataset do
begin
earn_id:=fieldvalues['earn_id'];
close; open;
end;
ADOQ_Operator.close; ADOQ_Operator.Open;
dataset.Locate('earn_id',earn_id,[]);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -