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

📄 inputgroomunit.pas

📁 很好地delphi书籍源码
💻 PAS
字号:
unit InputGRoomUnit;

interface

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

type
  TFrmInputGRoom = class(TForm)
    DBGrid1: TDBGrid;
    LocalDS: TDataSource;
    Query1: TQuery;
    AddPanel: TPanel;
    DatePanel: TPanel;
    DateOkSB: TSpeedButton;
    DateCancelSB: TSpeedButton;
    DateMC: TMonthCalendar;
    TimeDTP: TDateTimePicker;
    StatusBar1: TStatusBar;
    IDLabel: TLabel;
    Label2: TLabel;
    Label7: TLabel;
    Label5: TLabel;
    StartME: TMaskEdit;
    CardEdit: TEdit;
    GuestNameEdit: TEdit;
    GuestIDEdit: TEdit;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label6: TLabel;
    PriceEdit: TEdit;
    BedCB: TComboBox;
    RoomCB: TComboBox;
    KindCB: TComboBox;
    UpdateOkSB: TSpeedButton;
    AddCloseSB: TSpeedButton;
    Shape1: TShape;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure DateOkSBClick(Sender: TObject);
    procedure StartMEDblClick(Sender: TObject);
    procedure EndMEDblClick(Sender: TObject);
    procedure UpdateOkSBClick(Sender: TObject);
    procedure AddCloseSBClick(Sender: TObject);
    procedure DateCancelSBClick(Sender: TObject);
    procedure KindCBChange(Sender: TObject);
    procedure RoomCBChange(Sender: TObject);
    procedure BedCBChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmInputGRoom: TFrmInputGRoom;

implementation

uses DataModuleUnit, GetYourInputUnit;
{$R *.dfm}

procedure TFrmInputGRoom.FormCreate(Sender: TObject);
begin
  with DataModule1.qGRoomFee do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from tbGRoomFee_VIEW_2');
    Open;
    Last;
  end;
  KindCB.Items:=FindRoomKind;

end;

procedure TFrmInputGRoom.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action:=caFree;
end;

procedure TFrmInputGRoom.DBGrid1CellClick(Column: TColumn);
begin
  with Query1 do
  begin
    Close;
    Query1.DatabaseName:=DataModule1.qGRoomFee.DatabaseName;
    SQL.Clear;
    SQL.Add('select GuestID , GuestName ,CardID from tbGInfo ');
    SQL.Add('where GuestName="'+Column.Grid.Fields[1].AsString+'" and' );
    SQL.Add('CardID="'+Column.Grid.Fields[2].AsString+'"');
    Open;
    if ISEmpty then exit;
  end;
  GuestIDEdit.Text:=IntToStr(Query1.Fields[0].AsInteger);
  GuestNameEdit.Text:=Query1.Fields[1].AsString;
  CardEdit.Text:=Query1.Fields[2].AsString;
  StartME.Text:=DateTimeToStr(Now);
  AddPanel.Left:=(FrmInputGRoom.ClientWidth-AddPanel.Width) div 2 ;
  AddPanel.Top:=(FrmInputGRoom.ClientHeight-AddPanel.Height) div 2;
  if GuestIDEdit.Text<>'' then
  begin
    AddPanel.Visible:=true;
    KindCB.ItemIndex:=0;
  end;
end;

procedure TFrmInputGRoom.DateOkSBClick(Sender: TObject);
begin
  StartME.Text:=DateToStr(DateMC.Date)+' '+TimeToStr(TimeDTP.Time);
  DatePanel.Visible:=false;
end;

procedure TFrmInputGRoom.StartMEDblClick(Sender: TObject);
begin
  DatePanel.Left:=10;
  DatePanel.Top:=10;
  DatePanel.Visible:=true;
end;

procedure TFrmInputGRoom.EndMEDblClick(Sender: TObject);
begin
//  WhichMaskEdit:=2;
//  DatePanel.Left:=20;
//  DatePanel.Top:=20;
//  DatePanel.Visible:=true;
end;

procedure TFrmInputGRoom.UpdateOkSBClick(Sender: TObject);
var
  SQLStr:TStrings;
begin
  if (KindCB.Text='')or(RoomCB.Text='')or(BedCB.Text='')or(StartME.Text='') then
  begin
    Showmessage('信息不完整!');
    exit;
  end;
  SQLStr:=TStringList.Create;
//更新户tbGRoomFee表的信息
  SQLStr.Add('BEGIN TRAN MyTran');
  SQLStr.Add('UPDATE tbGRoomFee');
  SQLStr.Add('SET GuestID='+GuestIDEdit.Text+',');
  SQLStr.Add('RoomID="'+RoomCB.Text+'",');
  SQLStr.Add('BedID="'+BedCB.Text+'",');
  SQLStr.Add('BedPrice='+PriceEdit.Text+',');
  SQLStr.Add('BedStartDateTime="'+StartME.Text+'",');
  SQLStr.Add('BedEndDateTime=" "');
  SQLStr.Add('Where GuestID=-1 and');
  SQLStr.Add('GuestName="'+GuestNameEdit.Text+'" and');
  SQLStr.Add('CardID="'+CardEdit.Text+'"');
  //把宾馆消费客户表中的该客户的客户编号改为正式值
  SQLStr.Add('UPDATE tbGHotelFee');
  SQLStr.Add('SET GuestID='+GuestIDEdit.Text);

  SQLStr.Add('Where GuestID=-1 and');
  SQLStr.Add('GuestName="'+GuestNameEdit.Text+'" and');
  SQLStr.Add('CardID="'+CardEdit.Text+'"');
  //该房间中的该床位更新换为入住状态
  SQLStr.Add('UPDATE tbHRoomState');
  SQLStr.Add('SET BedState="入住"');
  SQLStr.Add('Where RoomID="'+RoomCB.Text+'" and BedID="'+BedCB.Text+'"');
  //该房间更新换为入住状态
  SQLStr.Add('UPDATE tbHRoomState');
  SQLStr.Add('SET RoomState="入住"');
  SQLStr.Add('Where RoomID="'+RoomCB.Text+'"');
  //如果该房中空闲床位已经是1 则房间状态更新为住满
  SQLStr.Add('if (Select Count(*) from tbHRoomState ');
  SQLStr.Add('where RoomID="'+RoomCB.Text+'" AND BedState="空闲")=0');
  SQLStr.Add('BEGIN');
  SQLStr.Add('UPDATE tbHRoomState ');
  SQLStr.Add('SET RoomState="住满" ');
  SQLStr.Add('Where RoomID="'+RoomCB.Text+'"');
  SQLStr.Add('END');
  SQLStr.Add('COMMIT TRAN');
  with DataModule1.qGInfo do
  begin
    Close;
    SQL.Clear;
    SQL.AddStrings(SQLStr);
    try
      ExecSQL;
      Showmessage('客户订房信息顺利写入数据库!');
    except On E:Exception do
      Application.MessageBox(PChar('操作失败!'+E.Message),'提示:',MB_ICONERROR);
    end;
  end;
  AddPanel.Visible:=false;
  with DataModule1.qGRoomFee do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from tbGRoomFee_VIEW_2');
    Open;
  end;
end;

procedure TFrmInputGRoom.AddCloseSBClick(Sender: TObject);
begin
  AddPanel.Visible:=false;
end;

procedure TFrmInputGRoom.DateCancelSBClick(Sender: TObject);
begin
  DatePanel.Visible:=false;
end;

procedure TFrmInputGRoom.KindCBChange(Sender: TObject);
var
  Room:string;
begin
   if KindCB.Text='待定' then exit;
   with DataModule1.qHRoomState do
   begin
     Close;
     SQL.Clear;
     SQL.Add('select RoomID from tbHRoomState');
     SQL.Add('where RoomKind="'+KindCB.Text+'" and RoomState<>"住满"');
     Open;
     RoomCB.Clear;
     First;
     while not eof do
     begin
       Room:=FieldByName('RoomID').AsString;
       if  RoomCB.Items.IndexOf(Room)<0 then
           RoomCB.Items.Add(Room);
       Next;
     end;
  end;

end;

procedure TFrmInputGRoom.RoomCBChange(Sender: TObject);
var
  Bed:string;
begin
   with DataModule1.qHRoomState do
   begin
     Close;
     SQL.Clear;
     SQL.Add('select BedID from tbHRoomState');
     SQL.Add('where RoomID="'+RoomCB.Text+'" and BedState="空闲"');
     Open;
     First;
     BedCB.Clear;
     while not eof do
     begin
       Bed:=FieldByName('BedID').AsString;
       if  BedCB.Items.IndexOf(Bed)<0 then
         BedCB.Items.Add(Bed);
       Next;
     end;
  end;
end;
procedure TFrmInputGRoom.BedCBChange(Sender: TObject);
begin
  with DataModule1.qHRoomState do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select BedPrice from tbHRoomState');
    SQL.Add('where RoomID="'+RoomCB.Text+'" and BedID="'+BedCB.Text+'"');
    Open;
    PriceEdit.Text:=FieldByName('BedPrice').Value;
  end;

end;

end.

⌨️ 快捷键说明

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