📄 c_vcdrent.pas
字号:
unit c_vcdrent;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, StdCtrls, ExtCtrls, ComCtrls, Buttons;
type
Tcfrm_vcdrent = class(TForm)
Group_zlr: TRadioGroup;
Group_zl: TGroupBox;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
e_zl_name: TEdit;
e_zl_sex: TEdit;
e_zl_nl: TEdit;
e_zl_zlx: TEdit;
e_zl_yj: TEdit;
e_zl_tel: TEdit;
Group_vcd: TGroupBox;
Label12: TLabel;
DBGrid1: TDBGrid;
e_vcdid: TEdit;
Group_qp: TGroupBox;
Label13: TLabel;
DataSource1: TDataSource;
ztl: TStatusBar;
Group_hy: TGroupBox;
Label1: TLabel;
Label2: TLabel;
e_hyid: TEdit;
e_hypass: TEdit;
Group_lz: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
e_yjid: TEdit;
e_yj: TEdit;
SpeedButton1: TSpeedButton;
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Group_zlClick(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure e_hyidExit(Sender: TObject);
procedure e_hypassExit(Sender: TObject);
procedure e_yjidExit(Sender: TObject);
procedure e_vcdidExit(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure e_yjExit(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure e_yjidEnter(Sender: TObject);
procedure e_hyidEnter(Sender: TObject);
procedure e_yjKeyPress(Sender: TObject; var Key: Char);
procedure e_yjEnter(Sender: TObject);
procedure e_yjidChange(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Group_zlrClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure e_hypassKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure e_hyidKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure e_yjKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure e_yjidKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure e_vcdidKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
procedure groupcolor;{出租明细及颜色改变}
end;
var
cfrm_vcdrent: Tcfrm_vcdrent;
implementation
uses datam, CommonRoutines;
{$R *.dfm}
procedure Tcfrm_vcdrent.FormCreate(Sender: TObject);
begin
dm.adoq_czbtmp.SQL.Clear;
dm.ADOQ_czbtmp.SQL.Add('delete from czbtmp'); //删除出租临时表信息
dm.ADOQ_czbtmp.ExecSQL;
dm.adoq_czbtmp.Close; //关闭数据集
dm.ADO_czbtmp.Close; //关闭临时表
end;
procedure Tcfrm_vcdrent.FormShow(Sender: TObject);
begin
e_hyid.SetFocus();
end;
procedure Tcfrm_vcdrent.Group_zlClick(Sender: TObject);
begin
dm.adoq_czbtmp.SQL.Clear;
dm.ADOQ_czbtmp.SQL.Add('delete from czbtmp'); //删除临时表内容
dm.ADOQ_czbtmp.ExecSQL;
dm.adoq_czbtmp.Close;
dm.ADO_czbtmp.Close;
dm.ADO_czdt.Cancel; //取消对czdt表的插入
case group_zlr.ItemIndex of
0: //会员
begin
group_hy.Visible:=true;
group_lz.Visible:=false;
group_qp.Visible:=false;
group_vcd.Enabled:=false;
e_hyid.SetFocus();
Groupcolor;
end;
1: //临租
begin
e_hyid.Text:='';
e_hypass.Text:='';
e_zl_name.Text:='';
e_zl_sex.Text:='';
e_zl_nl.Text:='';
e_zl_zlx.Text:='';
e_zl_yj.Text:='';
e_zl_tel.Text:='';
group_hy.Visible:=false;
group_lz.Visible:=true;
group_qp.Visible:=false;
group_vcd.Enabled:=false;
e_yjid.Enabled:=true;
e_yjid.Tag:=0;
e_yj.Enabled:=true;
e_yj.Text:='0.00';
e_yjid.Text:='';
e_yjid.Color:=clwindow;
e_yj.Color:=clwindow;
e_yjid.SetFocus();
Groupcolor;
end;
end;
end;
procedure Tcfrm_vcdrent.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
perform(wm_nextdlgctl,0,0);
end;
end;
procedure Tcfrm_vcdrent.e_hyidExit(Sender: TObject);
var
sqlz:string;
begin
e_hypass.Text:='';//清空填密码编辑框的内容
if e_hyid.Text='' then exit //如果没有填入会员证号则退出本过程
else
begin
if Length(e_hyid.Text)<5 then //如果输入的会员证号位数不足则自动在前面加0
case Length(e_hyid.Text) of
1: e_hyid.text:='0000'+e_hyid.text;
2: e_hyid.text:='000'+e_hyid.text;
3: e_hyid.text:='00'+e_hyid.text;
4: e_hyid.text:='0'+e_hyid.text;
end
end;
dm.ADO_vip.Open; //打开会员的信息表
dm.ADO_vip.First; //指针指向第一条记录
if not dm.ADO_vip.Locate('证号',e_hyid.Text,[]) then //判断输入的会员证号是否正确
begin
Application.MessageBox(PChar('证号错误,请重新录入!')
, PChar('提示'),MB_ICONEXCLAMATION);
e_hyid.Text:='';
e_hyid.SetFocus();
exit;
end;
{如果找到了相应的记录,则将会员的基本信息显示 }
e_zl_name.Text:=dm.ADO_vip.fieldbyname('姓名').asstring;
e_zl_sex.Text:=dm.ADO_vip.fieldbyname('性别').asstring;
e_zl_nl.Text:=dm.ADO_vip.fieldbyname('年龄').asstring;
e_zl_zlx.Text:=dm.ADO_vip.fieldbyname('证类型').asstring;
e_zl_yj.Text:=dm.ADO_vip.fieldbyname('押金').asstring;
e_zl_tel.Text:=dm.ADO_vip.fieldbyname('电话').asstring;
{搜索该会员是否有未还的影碟}
dm.ADO_czdt.Open;
dm.ADO_czdt.First;
dm.ADO_czdt.Sort:='证号';
if dm.ADO_czdt.Locate('证号',e_hyid.Text,[]) then
{如果有未还的记录则查询出租表(czb)中证号等于当前会员证号的所有记录并将其插入出租临时表czbtmp中 }
begin
dm.adoq_czbtmp.Close;
dm.adoq_czbtmp.SQL.Clear;
sqlz:='insert into czbtmp select * from czb where 证号='+''''+e_hyid.text+'''';
dm.adoq_czbtmp.SQL.Add(sqlz);
dm.adoq_czbtmp.ExecSQL;
end;
//dm.ADO_czdt.Edit;
dm.ADO_czbtmp.Close;
dm.ado_czbtmp.open; //刷新出租临时表
{搜索结束}
end;
procedure Tcfrm_vcdrent.e_hypassExit(Sender: TObject);
begin
begin
if e_hyid.Text='' then exit;//如果没有输入密码则退出本过程
{验证会员密码,如果正确则允许租借}
if e_hypass.Text<>dm.ADO_vip.FieldByName('pass').AsString then
begin
Application.MessageBox(PChar('密码错误!')
, PChar('提示'),MB_ICONEXCLAMATION);
e_hyid.SetFocus();
e_hypass.Text:='';
group_vcd.Enabled:=false;
groupcolor;
exit;
end;
e_hypass.Tag:=0;
group_vcd.Enabled:=true;
e_vcdid.SetFocus();
groupcolor;
end;
end;
procedure Tcfrm_vcdrent.e_yjidExit(Sender: TObject);
var
sqlz:string;
begin
{ 如果没有输入押金单号则允许自动生成 }
if e_yjid.Text='' then
begin
Speedbutton1.Enabled:=true;
exit;
end;
if e_yjid.tag=1 then exit;//如果是自动成生的押金单号则不搜索是否有未还记录
{搜索输入的押金单号是否有对应的未还记录}
dm.ADO_czdt.Open;
dm.ADO_czdt.First;
dm.ADO_czdt.Sort:='证号';
if dm.ADO_czdt.Locate('证号',e_yjid.Text,[]) then
{如果有未还的记录则查询出租表(czb)中押金单号等于当前输入的押金单号的所有记录并将其插入出租临时表czbtmp中 }
begin
e_yj.Text:=dm.ADO_czdt.fieldbyname('押金').AsString;
e_yjid.Enabled:=false;
e_yj.Enabled:=false;
e_yj.Color:=cl3dlight;
e_yjid.Color:=cl3dlight;
dm.adoq_czbtmp.Close;
dm.adoq_czbtmp.SQL.Clear;
sqlz:='insert into czbtmp select * from czb where 证号='+''''+e_yjid.text+'''';
dm.adoq_czbtmp.SQL.Add(sqlz);
dm.adoq_czbtmp.ExecSQL;
group_vcd.Enabled:=true;
e_vcdid.SetFocus();
groupcolor;
end
else //否则的话让用户使用自动生成的功能
begin
e_yjid.Text:='';
e_yjid.SetFocus;
end;
dm.ADO_czbtmp.Close;
dm.ado_czbtmp.open;//刷新出租临时表
{搜索结束}
end;
procedure Tcfrm_vcdrent.e_vcdidExit(Sender: TObject);
begin
if e_vcdid.Text='' then
begin
if group_zlr.ItemIndex<>2 then //如果没有输入要租赁的影碟编号则取消向czdt表插入记录的动作
dm.ADO_czdt.Cancel;
exit;
end;
dm.ADO_vcd.open;
dm.ADO_vcd.First;
{首先判断输入的编号是否存在,没有则提示错误}
if not dm.ADO_vcd.Locate('编号',e_vcdid.Text,[]) then
begin
Application.MessageBox(PChar('未查到任何影碟,请检查!')
, PChar('提示'),MB_ICONEXCLAMATION);
e_vcdid.Text:='';
e_vcdid.SetFocus();
exit;
end;
if dm.ADO_vcd.FieldByName('状态').AsString='已租' then
begin
Application.MessageBox(PChar('对不起,该影碟已经出租!')
, PChar('提示'),MB_ICONEXCLAMATION);
e_vcdid.Text:='';
e_vcdid.SetFocus();
exit;
end
else
begin
//如果找到,则对临时租借表做插入的操作
dm.ado_czbtmp.OPEN;
dm.ado_czbtmp.Append;
//根据租用人的情况做不同的插入操作
case group_zlr.ItemIndex of
0://会员
begin
dm.ado_czbtmp.FieldByName('证号').AsString:=e_hyid.Text; //插入证号
if e_zl_zlx.Text='年证' then //根据会员证类型的不同填入不同的租金
dm.ado_czbtmp.FieldByName('出租单价').AsString:=dm.ADO_vcd.fieldbyname('年证租金').AsString
else
dm.ado_czbtmp.FieldByName('出租单价').AsString:=dm.ADO_vcd.fieldbyname('月证租金').AsString;
end;
1:
begin
dm.ado_czbtmp.FieldByName('证号').AsString:=e_yjid.Text;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -