⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c_vcdrent.pas

📁 《delphi数据库设计与实例开发》随书光盘
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -