unitsupconsumedetail_data.~pas
来自「自己做过的工程」· ~PAS 代码 · 共 202 行
~PAS
202 行
unit unitsupconsumedetail_data;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Grids, DBGrids, DB, ADODB, DBCtrls;
type
Tformsupconsumedetail_data = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
but_ok: TButton;
but_cancel: TButton;
Label1: TLabel;
Label2: TLabel;
DataSourcesupname: TDataSource;
ds_sup_name: TADODataSet;
DBGrid1: TDBGrid;
cbox_supclass: TComboBox;
Label3: TLabel;
Label5: TLabel;
lab_supunit: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
ed_supno: TEdit;
ed_supmoney: TEdit;
ed_supname: TEdit;
ed_supprice: TEdit;
Label4: TLabel;
procedure but_cancelClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure cbox_supclassSelect(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure ed_supnoExit(Sender: TObject);
procedure but_okClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
formsupconsumedetail_data: Tformsupconsumedetail_data;
implementation
uses unitDMHotel,unitlogging,unitsupdetails;
{$R *.dfm}
procedure Tformsupconsumedetail_data.but_cancelClick(Sender: TObject);
begin
close;
end;
//显示窗口时的初始设置
procedure Tformsupconsumedetail_data.FormShow(Sender: TObject);
begin
//初始化下拉列表框cbox_supclass
cbox_supclass.Items.Clear;
DMHotel.ds_dictionary.Open;
DMHotel.ds_dictionary.Requery;
DMHotel.ds_dictionary.First;
while not DMHotel.ds_dictionary.Eof do
begin
if DMHotel.ds_dictionary.FieldValues['dicsort']='supclass' then
begin
//showmessage(DMHotel.ds_dictionary.FieldValues['dicname']);
cbox_supclass.Items.Add(DMHotel.ds_dictionary.FieldValues['dicname']);
end;
DMHotel.ds_dictionary.Next;
end;
DMHotel.ds_dictionary.Close;
ds_sup_name.Close;
cbox_supclass.Text:='';
ed_supname.Text:='';
ed_supprice.Text:='';
ed_supno.Text:='';
ed_supmoney.Text:='';
lab_supunit.Caption:='';
end;
//选中酒菜类型时
procedure Tformsupconsumedetail_data.cbox_supclassSelect(Sender: TObject);
begin
//当选择了酒菜类型时,出现相应的数据
ds_sup_name.Close;
ds_sup_name.Prepared:=false;
ds_sup_name.CommandText:='select * from sup_price_set where supclass=:ls_supclass';
ds_sup_name.Parameters.ParamByName('ls_supclass').Value:=cbox_supclass.Text;
ds_sup_name.Prepared:=true;
ds_sup_name.Open;
//取第一条记录,如果有数据,初始化各个显示框
ds_sup_name.First;
if ds_sup_name.FieldByName('supno').AsString <> '' then
begin
ed_supname.Text:=ds_sup_name.FieldByName('supname').AsString;
ed_supprice.Text:=ds_sup_name.FieldByName('supprice').AsString;
ed_supno.Text:='1';
lab_supunit.Caption:=ds_sup_name.FieldByName('supunit').AsString;
ed_supmoney.Text:=floattostr(strtofloat(ed_supno.Text)*strtofloat(ed_supprice.Text));
end;
end;
//点击DBGrid1时,各显示数据相应变化
procedure Tformsupconsumedetail_data.DBGrid1CellClick(Column: TColumn);
begin
if ds_sup_name.FieldByName('supno').AsString <> '' then
begin
ed_supname.Text:=ds_sup_name.FieldByName('supname').AsString;
ed_supprice.Text:=ds_sup_name.FieldByName('supprice').AsString;
ed_supno.Text:='1';
lab_supunit.Caption:=ds_sup_name.FieldByName('supunit').AsString;
ed_supmoney.Text:=floattostr(strtofloat(ed_supno.Text)*strtofloat(ed_supprice.Text));
end;
end;
//光标离开ed_supno时
procedure Tformsupconsumedetail_data.ed_supnoExit(Sender: TObject);
var
test_supno:integer;
begin
//判断是否是数字型
if (not tryStrToInt(ed_supno.Text,test_supno)) and (trim(ed_supno.Text)<>'') then
begin
MessageBox(handle,'您输入的数量不是一个整数类型!','错误',MB_OK or MB_ICONERROR);
ed_supno.text:='';
ed_supno.SetFocus;
exit;
end;
//算出总金额
ed_supmoney.Text:=floattostr(strtofloat(ed_supno.Text)*strtofloat(ed_supprice.Text));
end;
//保存记录
procedure Tformsupconsumedetail_data.but_okClick(Sender: TObject);
var
ls_supclass,ls_supname,ls_supprice,ls_supno,ls_supunit,ls_supmoney:string;
itemtype,itemno:string;
begin
ls_supclass:=cbox_supclass.Text;
ls_supname:=ed_supname.Text;
ls_supprice:=ed_supprice.Text;
ls_supno:=ed_supno.Text;
ls_supunit:=lab_supunit.Caption;
ls_supmoney:=ed_supmoney.Text;
//未选择完整的消费信息
if ls_supname='' then
begin
showmessage('请先输入完整的数据!');
cbox_supclass.SetFocus;
exit;
end;
//先从item_number表中取出最大记录号,再做相应处理
itemtype:='supconsumedetailid';
DMHotel.FindMaxNumber(itemtype,itemno);
//定义一个事务
DMHotel.ADOConnection1.BeginTrans;
G_scdid:=itemno; //赋给全局变量
//插入就餐消费明细记录
SQL:='insert into sup_consume_detail '+
'values('+''''+G_scdid+''''+','+''''+G_sdid+''''+','+
''''+ls_supname+''''+','+''''+ls_supclass+''''+','+
''''+ls_supunit+''''+','+''''+ls_supprice+''''+','+
''''+ls_supno+''''+','+''''+ls_supmoney+''''+','+
''''+'0'+''''+')';
//showmessage(sql);////
DMHotel.ADOQuery1.SQL.Text:=SQL;
try
DMHotel.ADOQuery1.ExecSQL;
except
showmessage('录入失败!');
DMHotel.ADOConnection1.RollbackTrans;
exit;
end;
DMHotel.ADOConnection1.CommitTrans;
//将最大值回写
DMHotel.RewriteMax(itemtype,itemno);
DMHotel.SetSupConsumeDetailView(G_sdid);
close;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?