addgroomunit.pas

来自「很好地delphi书籍源码」· PAS 代码 · 共 213 行

PAS
213
字号
unit AddGRoomUnit;

interface

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

type
  TFrmAddGRoom = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    GuestIDCB: TComboBox;
    LookUpIDSB: TSpeedButton;
    Label6: TLabel;
    AddOkSB: TSpeedButton;
    NextSB: TSpeedButton;
    GroupBox3: TGroupBox;
    DBGrid1: TDBGrid;
    GroupBox2: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label9: TLabel;
    AddRoomCB: TComboBox;
    AddBedCB: TComboBox;
    StartME: TMaskEdit;
    KindCB: TComboBox;
    StatusBar1: TStatusBar;
    Image1: TImage;
    procedure LookUpIDSBClick(Sender: TObject);
    procedure GuestIDCBChange(Sender: TObject);
    procedure AddOkSBClick(Sender: TObject);
    procedure KindCBChange(Sender: TObject);
    procedure AddRoomCBChange(Sender: TObject);
    procedure StartMEClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure NextSBClick(Sender: TObject);
  private
     StrValue:array[0..8]of string; //存放tbGRoomFee表中有9个字段对应的值
     procedure SelectAll;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmAddGRoom: TFrmAddGRoom;
  function GetMyDateTime : TDateTime; stdcall; external 'MyDll.dll';

implementation

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

procedure TFrmAddGRoom.LookUpIDSBClick(Sender: TObject);
var
  GName:string;
begin
  GName:=GetYourString;
  with DataModule1.qGInfo  do
  begin
    Close;
    sql.Clear;
    SQL.Add('SELECT GuestID From tbGInfo where GuestName="'+GName+'"');
    Open;
    GuestIDCB.Clear;
    First;
    while not eof do
    begin
      GuestIDCB.Items.Add(Fields[0].Value);
      Next;
    end;
    GuestIDCB.ItemIndex:=0;
    if RecordCount=1 then GuestIDCB.OnChange(self)
    else if RecordCount>1 then Showmessage('存在同名客户,请利用客户编号确定是哪一位!');
  end;
end;

procedure TFrmAddGRoom.GuestIDCBChange(Sender: TObject);
var
  i:word;
begin
  if not ISInteger(GuestIDCB.Text) then exit;
  with DataModule1.qGRoomFee  do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * From tbGRoomFee where GuestID='+GuestIDCB.Text);
    Open;
    if Not IsEmpty then
     for i:=0 to FieldCount-1 do
        StrValue[i]:=Fields[i].Value;
  end;
  SelectAll;
  AddOkSB.Enabled:=true;
end;

procedure TFrmAddGRoom.AddOkSBClick(Sender: TObject);
var
  BedPrice,SQLStr:string;
begin
  if (AddRoomCB.Text='')or(AddBedCB.Text='')or(StartME.Text='') then
  begin
    Application.MessageBox('请重新核实信息是否齐全!','提示',
     MB_Ok+MB_IconAsterisk+MB_ApplModal);
    exit;
  end;
 //从床位价格表tbHRoomState中取出价格信息
  with DataModule1.qHRoomState  do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select BedPrice from tbHRoomState where');
    SQL.Add('RoomID="'+AddRoomCB.Text+'" AND BedID="'+AddBedCB.Text+'"');
    Open;
    BedPrice:=FieldByName('BedPrice').Value;
  end;

  SQLStr:='BEGIN TRAN MyTran '
         +'EXEC Insert_tbGRoomFee '
         +StrValue[0]+',"' //编号
         +StrValue[1]+'","' //姓名
         +StrValue[2]+'","' //证件号码
         +AddRoomCB.Text+'","' //房号
         +AddBedCB.Text+'",'  //床号
         +BedPrice+','       //价格
         +'0,"'                //居住天数
         +StartME.Text //启用时间
         +'"," "'//停用时间
         +' UPDATE tbHRoomState SET BedState="入住" '
         +' Where RoomID="'+AddRoomCB.Text+'" and BedID="'+AddBedCB.Text+'"'
         +' UPDATE tbHRoomState SET RoomState="入住"'
         +' Where RoomID="'+AddRoomCB.Text+'"'
         +' if (Select Count(*) from tbHRoomState '
         +' where RoomID="'+AddRoomCB.Text+'" AND BedState="空闲")=0'
         +' BEGIN'
         +' UPDATE tbHRoomState SET RoomState="住满"'
         +' Where RoomID="'+AddRoomCB.Text+'"'
         +' END'
         +' COMMIT TRAN';
  with DataModule1.qGRoomFee  do
  begin
    Close;
    SQL.Clear;
    SQL.Add(SQLStr);
    ExecSQL;
  end;
  SelectAll;
  KindCB.ItemIndex:=0;
  AddRoomCB.Clear;
  AddBedCB.Clear;
end;

procedure TFrmAddGRoom.SelectAll;
begin
  if GuestIDCB.Text='' then exit;
  with DataModule1.qGRoomFee  do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select GuestID as 客户编号,GuestName as 客户姓名,');
    SQL.Add('CardID as 证件号码, RoomID as 房间号, BedID as 床位号,');
    SQL.Add('BedStartDateTime as 床位启用时间,BedEndDateTime as 床位停用时间');
    SQL.Add('From tbGRoomFee where GuestID='+GuestIDCB.Text);
    Open;
  end;
end;

procedure TFrmAddGRoom.KindCBChange(Sender: TObject);
var
  S:string;
begin
  AddRoomCB.Items:=RoomKindCBChange(KindCB.Text,S);
  StatusBar1.SimpleText:='床位价格:'+S +'(元)' ;
end;

procedure TFrmAddGRoom.AddRoomCBChange(Sender: TObject);
begin
   AddBedCB.Items:=RoomIDChange(AddRoomCB.Text);
end;

procedure TFrmAddGRoom.StartMEClick(Sender: TObject);
begin
  StartME.Text:=DateTimeToStr(GetMyDateTime);
end;

procedure TFrmAddGRoom.FormCreate(Sender: TObject);
begin
  GuestIDCB.Items:=FindGuestID;
  with DataModule1.tbHotelKind do
  begin
    Close;
    Open;
    KindCB.Clear;
    KindCB.Items.Add('待定');
    while not eof do
    begin
      KindCB.Items.Add(Fields[0].AsString);
      Next;
    end;
  end;
  StartME.Text:=DateTimeToStr(Now);
end;

procedure TFrmAddGRoom.NextSBClick(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

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