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

📄 c_vcdback.pas

📁 《delphi数据库设计与实例开发》随书光盘
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit c_vcdback;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, ExtCtrls, ComCtrls, StdCtrls, Buttons, DB;

type
  Tcfrm_vcdback = class(TForm)
    group_hy: TGroupBox;
    Label1: TLabel;
    e_hyid: TEdit;
    ZTL: TStatusBar;
    group_zlr: TRadioGroup;
    Group_zl: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    e_zlname: TEdit;
    e_zlsex: TEdit;
    e_zlzlx: TEdit;
    e_zlyj: TEdit;
    e_zltel: TEdit;
    Group_qp: TGroupBox;
    Label14: TLabel;
    Group_lz: TGroupBox;
    Label8: TLabel;
    Label9: TLabel;
    e_yjid: TEdit;
    e_yj: TEdit;
    Group_js: TGroupBox;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    e_qk: TEdit;
    e_ys: TEdit;
    e_ss: TEdit;
    e_thyj: TEdit;
    Group_hz: TGroupBox;
    Label7: TLabel;
    DBGrid1: TDBGrid;
    e_vcdid: TEdit;
    BitBtn1: TBitBtn;
    DataSource1: TDataSource;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure group_zlrClick(Sender: TObject);
    procedure e_hyidChange(Sender: TObject);
    procedure e_ssKeyPress(Sender: TObject; var Key: Char);
    procedure e_thyjKeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure e_hyidExit(Sender: TObject);
    procedure e_yjidExit(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure e_vcdidExit(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure e_yjidChange(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure e_thyjExit(Sender: TObject);
    procedure e_ssExit(Sender: TObject);
    procedure paymoney;//应收金额计算
    procedure hylzcx;
    procedure e_yjidKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure e_vcdidKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure e_hyidKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
   // procedure e_zlzlxChange(Sender: TObject);//vcdid反查会员零租
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  cfrm_vcdback: Tcfrm_vcdback;
  sqlz:string;
  hylzbh:string;//会员或零租证号

implementation
uses datam,CommonRoutines;

{$R *.dfm}
procedure Tcfrm_vcdback.paymoney;
var
 paymoney,rentdate:real;//应收金额,出租天数
begin
 rentdate:=trunc(Date)-trunc(dm.ADO_czbtmp.FieldByName('出租日期').asdatetime);
 if rentdate=0 then rentdate:=1;
 paymoney:=strtofloat(e_ys.text)+rentdate*dm.ADO_czbtmp.fieldbyname('出租单价').asfloat;//应收金额=应收金额+出租天数*出租单价
 e_ys.Text:=formatfloat('0.00',paymoney);
end;
procedure Tcfrm_vcdback.hylzcx;//会员零租查询(vcdid反查会员零租)
begin
   dm.ADO_czb.open;
   dm.ADO_czb.first;
   {通过e_vcdid中输入的影碟编号来反过来查询该影碟是否有出租}
   if not dm.ado_czb.locate('编号',e_vcdid.Text,[]) then
     begin
      application.MessageBox(pchar('无此影碟的出租记录,请检查!')
            ,pchar('提示'),MB_ICONEXCLAMATION);
      e_vcdid.text:='';
      e_vcdid.setfocus();
      exit;
     end;
   hylzbh:=dm.ADO_czb.fieldbyname('证号').asstring;
   {通过证号的字符串长度来判定是会员还是零租}
   if Length(hylzbh)=5 then  //会员
     begin
      group_zlr.itemindex:=0; //租赁人为会员
      group_zlr.onclick(group_zlr);
      e_hyid.text:=hylzbh;
      e_hyidExit(e_hyid);  //调用会员id的onexit过程
      e_hyid.enabled:=false;
      e_hyid.color:=cl3dlight;
     end;
   if length(hylzbh)=6 then
     begin
      group_zlr.itemindex:=1;
      group_zlr.onclick(group_zlr);
      e_yjid.text:=hylzbh;
      e_yjidExit(e_yjid); //调用押金单id的onexit过程
      e_yjid.enabled:=false;
      e_yjid.color:=cl3dlight;
     end;
end;


procedure Tcfrm_vcdback.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_vcdback.FormShow(Sender: TObject);
begin
  e_hyid.SetFocus();
  e_ys.Text:='0.00';
  e_ss.Text:='0.00';
  e_thyj.Enabled:=false;
  e_thyj.Color:=cl3dlight;
  e_thyj.Text:='0.00';
end;

procedure Tcfrm_vcdback.FormActivate(Sender: TObject);
begin
 ztl.Panels[1].Text:='  当前日期:'+datetostr(date());
end;

procedure Tcfrm_vcdback.group_zlrClick(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_czbtmp.Open;
   e_qk.Text:='0.00';
   e_ys.Text:='0.00';
   e_ss.Text:='0.00';
   e_thyj.Text:='0.00';
   //删除czbtmp
   CASE GROUP_ZLR.ItemIndex OF
    0:BEGIN
       GROUP_HY.Visible:=true;
       e_hyid.Enabled:=true;
       e_hyid.SetFocus();
       group_lz.Visible:=false;
       group_qp.Visible:=false;
       e_yjid.Text:='';
       e_yj.Text:='0.00';
       e_ss.Enabled:=true;
       e_ss.Color:=clwindow;
       e_thyj.Enabled:=false;
       e_thyj.Color:=cl3dlight;
      end;
    1:begin
       GROUP_HY.Visible:=false;
       group_qp.Visible:=false;
       group_lz.Visible:=true;
       e_zlname.Text:='';
       e_zlsex.Text:='';
       e_zlzlx.Text:='';
       e_zlyj.Text:='';
       e_zltel.Text:='';
       e_ss.Enabled:=true;
       e_ss.Color:=clwindow;
       e_thyj.Enabled:=true;
       e_thyj.Color:=clwindow;
       e_hyid.Text:='';
       e_yjid.Enabled:=true;
       e_yjid.SetFocus();
      end;

    end;
end;

procedure Tcfrm_vcdback.e_hyidChange(Sender: TObject);
begin
{如果输入的会员证号改变则删除临时租借表(czbtmp)中的内容,且清空其他编辑框中的信息}
       e_zlname.Text:='';
       e_zlsex.Text:='';
       e_zlzlx.Text:='';
       e_zlyj.Text:='';
       e_zltel.Text:='';
       e_qk.Text:='0.00';
       e_ys.Text:='0.00';
       e_ss.Text:='0.00';
       e_thyj.Text:='0.00';
       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_vcdback.e_ssKeyPress(Sender: TObject; var Key: Char);
begin
if not ( Key in ['0'..'9',#13,#8,'.']) then Key := #0;
end;

procedure Tcfrm_vcdback.e_thyjKeyPress(Sender: TObject; var Key: Char);
begin
if not ( Key in ['0'..'9',#13,#8,'.']) then Key := #0;
end;

procedure Tcfrm_vcdback.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
   begin
    key:=#0;
    perform(wm_nextdlgctl,0,0);
   end;
end;

procedure Tcfrm_vcdback.e_hyidExit(Sender: TObject);
begin
if e_hyid.text='' then exit;
  if Length(e_hyid.Text)<5 then  //如果输入的会员证号位数不够则在前面自动加零
       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;
   if dm.ADO_czbtmp.IsEmpty=false then exit; //如果临时租借表的内容不为空则退出本过程
   dm.ADO_czdt.Open;
   dm.ADO_czdt.First;
   dm.ADO_czdt.Sort:='证号';
   if not dm.ADO_czdt.Locate('证号',e_hyid.Text,[]) then //查询有无租借记录
     begin
       Application.MessageBox(PChar('证号错误或无此用户租借记录,请重新录入!')
      , PChar('提示'),MB_ICONEXCLAMATION);
      e_hyid.Text:='';
      e_hyid.SetFocus();
     end
   else {如果有租借记录则先查询出会员表中的该会员的个人信息}
     begin
      dm.ADO_vip.Open;
      dm.ADO_vip.First;
      dm.ADO_vip.Locate('证号',e_hyid.Text,[]);
      e_zlname.Text:=dm.ADO_vip.fieldbyname('姓名').asstring;
      e_zlsex.Text:=dm.ADO_vip.fieldbyname('性别').asstring;
      e_zlzlx.Text:=dm.ADO_vip.fieldbyname('证类型').asstring;
      e_zlyj.Text:=formatfloat('0.00',dm.ADO_vip.fieldbyname('押金').asfloat);
      e_zltel.Text:=dm.ADO_vip.fieldbyname('电话').asstring;
      dm.ADO_vip.Close;
      //将租借表中该会员的租借记录查询出来insert到表czbtmp中生成租借临时库
      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;
      dm.ADO_czbtmp.close;
      dm.ADO_czbtmp.Open;
      //查询有无欠款
      dm.ado_qk.open;
      dm.ado_qk.first;
      if dm.ado_qk.locate('证号',e_hyid.Text,[]) then
         e_qk.Text:=formatfloat('0.00',dm.ado_qk.fieldbyname('金额').asfloat);
      dm.ado_qk.Close;
      e_vcdid.SetFocus();
     end;
end;

procedure Tcfrm_vcdback.e_yjidExit(Sender: TObject);
begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -