unitsupdetails.pas

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

PAS
203
字号
unit unitsupdetails;

interface

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

type
  Tformsupdetails = class(TForm)
    Panel1: TPanel;
    page_sup: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    DBGrid1: TDBGrid;
    DataSourcedetail: TDataSource;
    DataSourceconsumedetail: TDataSource;
    but_add: TButton;
    but_modify: TButton;
    but_exit: TButton;
    DBGrid2: TDBGrid;
    Label1: TLabel;
    lab_supuserid: TLabel;
    procedure but_exitClick(Sender: TObject);
    procedure but_addClick(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure DBGrid2CellClick(Column: TColumn);
    procedure TabSheet2Show(Sender: TObject);
    procedure but_modifyClick(Sender: TObject);
    procedure TabSheet1Show(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  formsupdetails: Tformsupdetails;

  SQL:string;
  G_sdid,G_scdid:string;    //存储就餐客人明细记录号和用餐消费明细记录号
  pageindex:integer;//0-就餐客人明细 1-就餐消费明细
  statuscolor:Tcolor;  //状态颜色
implementation
       uses unitDMHotel,unitsupmanage,unitsupdetail_data,unitsupconsumedetail_data;
{$R *.dfm}

procedure Tformsupdetails.but_exitClick(Sender: TObject);
begin
    close;
end;

procedure Tformsupdetails.but_addClick(Sender: TObject);
begin
    pageindex:=page_sup.ActivePageIndex;
    //就餐客人明细
    if  pageindex=0   then
            //打开录入窗口
            formsupdetail_data.ShowModal
    //就餐消费明细
    else
        begin
            //如果没有选定客人就餐记录,不能添加就餐消费记录
            if G_sdid='' then
               begin
                   showmessage('请选选择客人就餐记录!');
                   exit;
               end;
               
            //打开录入窗口
            formsupconsumedetail_data.ShowModal;

        end;
end;

//记录作废
procedure Tformsupdetails.but_modifyClick(Sender: TObject);
var
    ls_sroomno:string;
begin
    pageindex:=page_sup.ActivePageIndex;
    //就餐客人明细
    if  pageindex=0   then
        begin
            DMHotel.ds_sup_detail.Open;
            G_sdid:=DMHotel.ds_sup_detail.FieldByName('sdid').AsString;
            if G_sdid='' then
               begin
                   showmessage('请先选择要作废的记录!');
                   exit;
               end;

            //作废警告提示
            if MessageBox(handle,'作废就餐客人记录将使所有该条记录相关的就餐消费明细记录作废,确定作废吗?','警告',MB_OKCANCEL or MB_ICONERROR)=2 then
               exit;

            //定义一个事务,同时执行改变包间状态和修改iscancellation标志位
            DMHotel.ADOConnection1.BeginTrans;
            //如果是包间,改变包间状态
            if DMHotel.ds_sup_detail.FieldValues['sroomno']<>null then
               begin
                   ls_sroomno:=DMHotel.ds_sup_detail.FieldValues['sroomno'];
                   //showmessage(ls_sroomno);  ////
                   //空闲的颜色
                   statuscolor:=color1;
                   //改变被使用包间状态为空闲
                   formsupmanage.sroomstatus_change(statuscolor,strtoint(ls_sroomno),'空闲');
               end;

            //修改sup_detail表的iscancellation标志位
            SQL:='update sup_detail '+'set iscancellation='+''''+'1'+''''
                +' '+'where sdid='+''''+G_sdid+'''';
            DMHotel.ADOQuery1.SQL.Text:=SQL;
            try
                DMHotel.ADOQuery1.ExecSQL;
            except
                showmessage('操作失败!');
                DMHotel.ADOConnection1.RollbackTrans;  //失败回滚
                exit;
            end;

            //修改dup_consume表的iscancellation标志位
            SQL:='update sup_consume_detail '+'set iscancellation='+''''+'1'+''''
                +' '+'where supuserid='+''''+G_sdid+'''';
            DMHotel.ADOQuery1.SQL.Text:=SQL;
            try
                DMHotel.ADOQuery1.ExecSQL;
            except
                showmessage('操作失败!');
                DMHotel.ADOConnection1.RollbackTrans;  //失败回滚
                exit;
            end;

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

            DMHotel.ds_sup_detail.Requery;
            DMHotel.SetSupConsumeDetailView(G_sdid);
        end
    //就餐消费明细
    else
        begin
           DMHotel.ds_sup_consume_detail.Open;
           G_scdid:=DMHotel.ds_sup_consume_detail.FieldByName('scdid').AsString;
           if G_scdid='' then
              begin
                   showmessage('请先选择要作废的记录!');
                   exit;
               end;
           //作废警告提示
            if MessageBox(handle,'确定要作废该条记录吗?','警告',MB_OKCANCEL or MB_ICONERROR)=2 then
               exit;

           //修改dup_consume表的iscancellation标志位
           SQL:='update sup_consume_detail '+'set iscancellation='+''''+'1'+''''
                +' '+'where scdid='+''''+G_scdid+'''';
           DMHotel.ADOQuery1.SQL.Text:=SQL;
           DMHotel.ADOQuery1.ExecSQL;

           DMHotel.SetSupConsumeDetailView(G_sdid);
        end;
end;

procedure Tformsupdetails.DBGrid1CellClick(Column: TColumn);
begin
    DBGrid1.SetFocus;

end;

procedure Tformsupdetails.DBGrid2CellClick(Column: TColumn);
begin
    DBGrid2.SetFocus;
end;

procedure Tformsupdetails.TabSheet2Show(Sender: TObject);
begin
    DMHotel.ds_sup_detail.Open;
    G_sdid:=DMHotel.ds_sup_detail.FieldByName('sdid').AsString;

    if G_sdid='' then
       lab_supuserid.Caption:='没有记录'
    else
       lab_supuserid.Caption:=G_sdid;

    if G_sdid<>'' then
       DMHotel.SetSupConsumeDetailView(G_sdid);

end;

procedure Tformsupdetails.TabSheet1Show(Sender: TObject);
begin
    DMHotel.ds_sup_consume_detail.Open;
    G_scdid:=DMHotel.ds_sup_consume_detail.FieldByName('scdid').AsString;
end;

procedure Tformsupdetails.FormShow(Sender: TObject);
begin
    DMHotel.ds_sup_detail.Open;
    DMHotel.ds_sup_detail.Requery;
end;

end.

⌨️ 快捷键说明

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