unitsupdetail_data.~pas

来自「自己做过的工程」· ~PAS 代码 · 共 219 行

~PAS
219
字号
unit unitsupdetail_data;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls;

type
  Tformsupdetail_data = class(TForm)
    Panel2: TPanel;
    but_ok: TButton;
    but_cancel: TButton;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    ed_username: TEdit;
    ed_sroomno: TEdit;
    ed_userno: TEdit;
    riched_remark: TRichEdit;
    RadioGroup1: TRadioGroup;
    rbut_sroom: TRadioButton;
    rbut_table: TRadioButton;
    Label6: TLabel;
    ed_tableno: TEdit;
    procedure but_cancelClick(Sender: TObject);
    procedure but_okClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure rbut_sroomClick(Sender: TObject);
    procedure rbut_tableClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  formsupdetail_data: Tformsupdetail_data;

implementation
       uses unitDMHotel,unitlogging,unitsupmanage,unitsupdetails;
{$R *.dfm}

procedure Tformsupdetail_data.but_cancelClick(Sender: TObject);
begin
    close;
end;

//保存记录
procedure Tformsupdetail_data.but_okClick(Sender: TObject);
var
    ls_tableno:string;
    ls_username,ls_sroomno,ls_userno,ls_remark:string;
    ls_entertime:Tdatetime;
    ls_sroomstatus:string;
    itemtype,itemno:string;
    test_userno:integer;

begin
    if rbut_sroom.Checked=true then
       begin            ///////////包间客人///////////
         //丛输入框中取数据,插入到sup_detail表中或用作修改
         ls_username:=ed_username.Text;
         ls_sroomno:=ed_sroomno.Text;
         ls_userno:=ed_userno.Text;
         ls_entertime:=date+time;
         ls_remark:=riched_remark.Text;

         //判断是否是数字型
         if (not tryStrToInt(ls_userno,test_userno)) and (trim(ls_userno)<>'') then
            begin
              MessageBox(handle,'您输入的客人数不是一个数字类型!','错误',MB_OK or MB_ICONERROR);
              ed_userno.Text:='';
              ed_userno.SetFocus;
              exit;
            end;


         //找到该包间的记录
         DMHotel.ds_sup_room_status.Open;
         DMHotel.ds_sup_room_status.Requery;

         if not DMHotel.ds_sup_room_status.Locate('sroomno',ls_sroomno,[])then
            begin
               showmessage('包间编号'+ls_sroomno+'不存在!');
               ed_sroomno.Text:='';
               ed_sroomno.SetFocus;
               exit;
            end;

         //取得包间状态,判断是否能被使用
         ls_sroomstatus:=DMHotel.ds_sup_room_status.FieldValues['sroomstatus'];
         //showmessage(ls_sroomstatus);//

         if (ls_sroomstatus<>'空闲') and (ls_sroomstatus<>'预定') then
            begin
               showmessage('该包间不在空闲或预定状态,不能被使用!');
               ed_sroomno.Text:='';
               ed_sroomno.SetFocus;
               exit;
            end;

         //使用的颜色
         statuscolor:=color3;
         //改变将被使用包间状态
         formsupmanage.sroomstatus_change(statuscolor,strtoint(ls_sroomno),'使用');
       end
       
    else           ///////////散座客人////////////
       begin

          //记录桌号
          ls_tableno:=ed_tableno.Text;
          ls_entertime:=date+time;
       end;

    //提示是否确实要保存
    if MessageDlg('您确定要保存该记录吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
       exit;

    //先从item_number表中取出最大记录号,再做相应处理
    itemtype:='supdetailid';
    DMHotel.FindMaxNumber(itemtype,itemno);

    //执行插入用餐客人明细表记录和将最大值回写入item_number表

    //插入用餐客人明细记录  如果是包间,则删除相应的预定
      //事务开始
    DMHotel.ADOConnection1.BeginTrans;
    if  rbut_sroom.Checked=true   then    //包间客人
        SQL:='insert into sup_detail(sdid,username,userno,entertime,sroomno,employeeid,remark,iscancellation,ischeck) '+
            'values('+''''+itemno+''''+','+''''+ls_username+''''+','+''''+ls_userno+''''+','+
            ''''+datetimetostr(ls_entertime)+''''+','+''''+ls_sroomno+''''+','+''''+username+''''+','+
            ''''+ls_remark+''''+','+''''+'0'+''''+','+''''+'no'+''''+')'
    else                               //散座客人
        SQL:='insert into sup_detail(sdid,employeeid,entertime,tableno,iscancellation,ischeck) '+
            'values('+''''+itemno+''''+','+''''+username+''''+','+
            ''''+datetimetostr(ls_entertime)+''''+','+''''+ls_tableno+''''+','+
            ''''+'0'+''''+','+''''+'no'+''''+')';

    //showmessage(sql);////

    DMHotel.ADOQuery1.SQL.Text:=SQL;
    try
        DMHotel.ADOQuery1.ExecSQL;
    except
        showmessage('录入失败!');
        DMHotel.ADOConnection1.RollbackTrans;    //失败回滚
        exit;
    end;

    //如果是包间客人,则删除相应预定记录//包间客人
    if  rbut_sroom.Checked=true   then
      begin
        SQL:='delete from sroom_book where  sroomno='+''''+ls_sroomno+'''';
        DMHotel.ADOQuery1.SQL.Text:=SQL;
        try
            DMHotel.ADOQuery1.ExecSQL;
        except
            showmessage('删除预定记录失败!');
            DMHotel.ADOConnection1.RollbackTrans;    //失败回滚
            exit;
        end;
      end;

    DMHotel.ADOConnection1.CommitTrans;          //成功提交

    //将最大值回写
    DMHotel.RewriteMax(itemtype,itemno);

    G_sdid:=itemno;     //将记录号赋给全局变量
    DMHotel.ds_sup_detail.Requery;
    close;
end;

//显示窗口时的初始设置
procedure Tformsupdetail_data.FormShow(Sender: TObject);
begin
    //确保数据集打开
    DMHotel.ds_sup_detail.Open;

    //清空原来的目录
    ed_tableno.Text:='';
    ed_username.Text:='';
    ed_sroomno.Text:='';
    ed_userno.Text:='';
    riched_remark.Text:='';
    
    if rbut_sroom.Checked=true then
       ed_sroomno.SetFocus
    else
       ed_tableno.SetFocus;

end;

procedure Tformsupdetail_data.rbut_sroomClick(Sender: TObject);
begin
    ed_tableno.Enabled:=false;
    ed_username.Enabled:=true;
    ed_sroomno.Enabled:=true;
    ed_userno.Enabled:=true;
    riched_remark.Enabled:=true;
    ed_sroomno.SetFocus;
end;

procedure Tformsupdetail_data.rbut_tableClick(Sender: TObject);
begin
    ed_tableno.Enabled:=true;
    ed_username.Enabled:=false;
    ed_sroomno.Enabled:=false;
    ed_userno.Enabled:=false;
    riched_remark.Enabled:=false;
    ed_tableno.SetFocus;
end;

end.

⌨️ 快捷键说明

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