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 + -
显示快捷键?