📄 yysb.pas
字号:
unit yysb;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, Buttons, Mask;
type
Tf_yysb = class(TForm)
xzdate: TDateTimePicker;
Label1: TLabel;
ok: TBitBtn;
cancel: TBitBtn;
Label2: TLabel;
xzupdown: TUpDown;
retmess: TMemo;
search: TBitBtn;
xznum: TEdit;
Label3: TLabel;
xzsjd: TComboBox;
cancel1: TBitBtn;
Cancel2: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure cancelClick(Sender: TObject);
procedure xznumChange(Sender: TObject);
procedure searchClick(Sender: TObject);
procedure okClick(Sender: TObject);
procedure xzsjdChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
f_yysb: Tf_yysb;
zwcount : integer; //座位数
wdate : TDateTime; //日期
sjd : string; //时间段
i: integer;
implementation
uses jfos, data;
{$R *.DFM}
procedure Tf_yysb.FormClose(Sender: TObject; var Action: TCloseAction);
begin
f_jfos.Enabled:=True;
end;
procedure Tf_yysb.FormShow(Sender: TObject);
begin
//初始化按钮
Cancel.Caption:=Cancel2.Caption;
Cancel.Glyph:=Cancel2.Glyph;
//初始化时间段、日期、信息
xzdate.Date:=Date+1;
retmess.Text:='预约时间必须在今天以后(不包括今天)。';
sjd:='';
//初始化时间段选择
xzsjd.Clear;
with ds_data.Qu_yygetsjd do
begin
Close;
Open;
for i:=1 to recordCount do
begin
xzsjd.Items.Append(FieldByName('Name').AsString);
Next;
end;
Close;
end;
//得到座位总数
with ds_data.Qu_zwb do
begin
Close;
Open;
zwcount:=RecordCount;
Close;
end;
end;
procedure Tf_yysb.cancelClick(Sender: TObject);
begin
f_yysb.Close;
end;
procedure Tf_yysb.xznumChange(Sender: TObject);
begin
//选择人数的变化
try
xznum.Text:=IntToStr(StrToInt(xznum.Text));
except
xznum.Text:='0';
end;
end;
procedure Tf_yysb.searchClick(Sender: TObject);
var ayycount : integer; //已经预约的设备数
begin
if xzdate.Date<=Date then
begin
retmess.Text:='预约时间必须在今天以后(不包括今天)。';
exit;
end;
if sjd='' then
begin
retmess.Text:='请正确选择时间段。';
exit;
end;
//预约显示
wdate:=xzdate.Date;
with ds_data.Qu_yyse do
begin
//参数设置
Close;
ParamByName('sjdate').AsDate:=wdate;
ParamByName('sjd').value:=sjd;
Open;
ayycount:=RecordCount;
Close;
end;
retmess.Text:=DateToStr(wdate)+' '+xzsjd.Text+',已预约'+IntToStr(ayycount)+'台,空余'+IntToStr(zwcount-ayycount)+'台。';
end;
procedure Tf_yysb.okClick(Sender: TObject);
var ayycount : integer; //已预约人数
yynum : integer; //预约人数
yybool : integer; //是否可以预约
setnum,sbnum : string; //座位号、设备号
begin
if Application.MessageBox('是否预约?', '询问', Mb_OKCancel)=IdCancel then
exit;
if xzdate.Date<=Date then
begin
retmess.Text:='预约时间必须在今天以后(不包括今天)。';
Application.MessageBox(PChar(retmess.Text), '错误', Mb_OK);
exit;
end;
if sjd='' then
begin
retmess.Text:='请正确选择时间段。';
Application.MessageBox(PChar(retmess.Text), '错误', Mb_OK);
exit;
end;
//预约
wdate:=xzdate.Date;
with ds_data.Qu_yyse do
begin
Close;
ParamByName('sjdate').AsDate:=wdate;
ParamByName('sjd').value:=sjd;
Open;
ayycount:=RecordCount;
Close;
end;
//计算人数
yynum:=StrToInt(xznum.Text);
if yynum>zwcount-ayycount then
begin //人数过多错误
Application.MessageBox('预约人数过多,请减少人数。', '错误', Mb_OK);
exit;
end;
if yynum<=0 then
begin //人数过少错误
Application.MessageBox('预约人数错误。', '错误', Mb_OK);
exit;
end;
//预约设备
ds_data.Qu_zwb.Close;
ds_data.Qu_zwb.Open;
while (yynum>0) do
begin
//得到可以预约的设备
setnum:=ds_data.Qu_zwb.FieldByName('setnum').AsString;
with ds_data.qu_yysb do
begin
Close;
ParamByName('setnum').value:=setnum;
ParamByName('sjdate').AsDate:=wdate;
ParamByName('sjd').value:=sjd;
Open;
yybool:=RecordCount;
Close;
end;
if yybool=0 then
begin //可以预约
with ds_data.qu_yysbup do
begin //得到设备号
Close;
ParamByName('setnum').value:=setnum;
Open;
sbnum:=FieldByName('num').AsString;
Close;
end;
with ds_data.Qu_yyjlup do
begin //更新上机记录数据库
Close;
Open;
Append;
FieldByName('setnum').AsString:=setnum;
FieldByName('sbnum').AsString:=sbnum;
FieldByName('xhnum').AsString:='预约';
FieldByName('sjdate').AsDateTime:=wdate;
FieldByName('sjd').AsString:=sjd;
Post;
Close;
end;
//预约人数减1
yynum:=yynum-1;
end;
ds_data.Qu_zwb.Next; //下一个座位
end;
ds_data.Qu_zwb.Close; //关闭座位表
Application.MessageBox('预约完成。', '提示', Mb_OK);
searchClick(nil); //显示信息
Cancel.Caption:=Cancel1.Caption;
Cancel.Glyph:=Cancel1.Glyph;
end;
procedure Tf_yysb.xzsjdChange(Sender: TObject);
begin
if xzsjd.ItemIndex>=0 then
sjd:=IntToStr(xzsjd.ItemIndex+1);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -