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

📄 xhunit.pas

📁 很好用的一个票据管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit XhUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, ComCtrls, GridsEh, DBGridEh, ExtCtrls,PrnDbgeh,prvieweh,printers;

type
  TXhForm = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    DBGridEh1: TDBGridEh;
    DBGridEh2: TDBGridEh;
    Panel3: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    ComboBox1: TComboBox;
    DateTimePicker1: TDateTimePicker;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    ComboBox2: TComboBox;
    Edit4: TEdit;
    Button1: TButton;
    Button2: TButton;
    Panel4: TPanel;
    Panel5: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Panel6: TPanel;
    DBGridEh3: TDBGridEh;
    idLabel: TLabel;
    PrintDBGridEh1: TPrintDBGridEh;
    BitBtn4: TBitBtn;
    procedure delnewll;
    procedure xhbmnewll;
    procedure kqmsnewll;
    procedure combobox1new;
    procedure Grbox1comboboxnew;
    procedure xhnewll;
    procedure formcreate(Sender: TObject);
    procedure dbgrideh1cellclick(Column: TColumnEh);
    procedure combobox2change(Sender: TObject);
    procedure combobox1change(Sender: TObject);
    procedure dbgrideh2cellclick(Column: TColumnEh);
    procedure Button1Click(Sender: TObject);
    procedure edit1chagne(Sender: TObject);
    procedure edit2change(Sender: TObject);
    procedure combobox1keydown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure datetimepicker1keydown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edit1keydown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edit2keydown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edit3keydown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure combobox2keydown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edit4keydown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dbgrideh3cellclick(Column: TColumnEh);
    procedure Button2Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure edit1keypress(Sender: TObject; var Key: Char);
    procedure edit2keypress(Sender: TObject; var Key: Char);
    procedure edit3keypress(Sender: TObject; var Key: Char);
    procedure BitBtn4Click(Sender: TObject);
  private
    { Private declarations }
    id,ms_id,qt,unm,sl:integer;
    ql_id,qxhm,jxhm,lybm,lyr:string;
  public
    { Public declarations }
  end;

var
  XhForm: TXhForm;

implementation

uses dm;

{$R *.dfm}
procedure txhform.delnewll;
begin
 with dmdata.KqADOQuery do
 begin
   close;
   sql.Clear;
   sql.Add('delete from t_kqb where sl = 0');
   execsql;
 end;
end;
procedure txhform.xhbmnewll;
begin
 with dmdata.bmADOQuery do
 begin
   close;
   sql.Clear;
   sql.Add('select * from t_bm ');
   open;
 end;
end;
procedure txhform.kqmsnewll;
begin
     with dmdata.KqqsADOQuery do
     begin
       close;
       sql.Clear;
       sql.Add('select * from t_bm where dwbm=:a');
       parameters.ParamByName('a').Value:=trim(combobox2.Text);
       open;
     end;
     with dmdata.KqMsADOQuery do
     begin
       close;
       sql.Clear;
       sql.Add('select a.ql,b.id,b.ms_id,b.rq,b.sl,b.qxhm,b.jxhm,b.kqbm from t_bjql as a inner join t_kqb as b on a.km = b.ql_id where (KQBM = :a) and (qt = 1)' );
       parameters.ParamByName('a').Value:=trim(dmdata.KqqsADOQuery.fieldbyname('km').AsString);
       open;
     end;
    //combobox1.Text:=dmdata.KqmsADOQuery.fieldbyname('ql').AsString;
end;
procedure txhform.combobox1new;
begin
   dmdata.BjqlADOTable.Active:=false;
  dmdata.BjqlADOTable.Active:=true;
   dmdata.BjqlADOTable.First;
   while not dmdata.BjqlADOTable.eof do
   begin
     combobox1.Items.Add(dmdata.BjqlADOTable['QL']);
     dmdata.BjqlADOTable.Next;
   end;
   //combobox1.Text:=dmdata.KqmsADOQuery.fieldbyname('ql').AsString;
end;
procedure Txhform.Grbox1comboboxnew;
begin
  dmdata.bmADOTable.Active:=false;
  dmdata.bmADOTable.Active:=true;
   dmdata.BmADOTable.First;
   while not dmdata.BmADOTable.eof do
   begin
     combobox2.Items.Add(dmdata.bmADOTable['dwbm']);
     dmdata.bmADOTable.Next;
   end;
   combobox2.Text:=dmdata.bmADOQuery.fieldbyname('dwbm').AsString;
end;
procedure txhform.xhnewll;
begin
  with dmdata.xhADOQuery do
  begin
    close;
    sql.Clear;
    sql.Add('select a.id,a.ql_id,a.rq,a.sl,a.qxhm,a.jxhm,a.qt,a.hxbm,a.qt,a.xhr,a.ms_id,b.ql,c.DWBM from t_xhb as a,t_bjql as b,t_bm as c where (a.ql_id=b.km)and(a.hxbm=c.KM) order by a.id');
    open;
  end;
end;
procedure TXhForm.formcreate(Sender: TObject);
var
 yy,mm,dd:word;
begin
  delnewll;
  xhbmnewll;
  Grbox1comboboxnew;
  combobox1new;
  combobox2change(Sender);
  datetimepicker1.Date:=dmdata.ADOTable_T_user['date'];
  xhnewll;
  decodedate(dmdata.ADOTable_T_user.fieldbyname('date').AsDateTime,yy,mm,dd);
   printdbgrideh1.PageHeader.CenterText.Add(dmdata.ADOTable_T_user.fieldbyname('dh').AsString);
   printdbgrideh1.Title.Add(inttostr(yy)+'年'+inttostr(mm)+'月份消耗票据');
   printdbgrideh1.PageFooter.RightText.Add('第&[Page]页 共&[Pages]页'+'打印日期:'+DateToStr(Now));
   printdbgrideh1.PageFooter.CenterText.add('制表人:'+dmdata.ADOTable_T_user.fieldbyname('name').AsString);
   printdbgrideh1.PageFooter.LeftText.Add('消耗人:            ');
   button1.Enabled:=false;
   button2.Enabled:=false;
   edit1.MaxLength:=dm.DMData.pjlen;
   edit2.MaxLength:=dm.DMData.pjlen;
   edit3.MaxLength:=dm.DMData.pjlen;
end;

procedure TXhForm.dbgrideh1cellclick(Column: TColumnEh);
begin
   with dmdata.bmADOQuery do
   begin
     if RecordCount > 0 then
      begin
        combobox2.Text:=dmdata.bmADOQuery.fieldbyname('dwbm').AsString;
      end;
   end;
   kqmsnewll;
end;

procedure TXhForm.combobox2change(Sender: TObject);
begin
   kqmsnewll;
end;

procedure TXhForm.combobox1change(Sender: TObject);
begin
   with dmdata.BjqlADOQuery do
   begin
     close;
     sql.Clear;
     sql.Add('select * from t_bjql where ql= :a');
     parameters.ParamByName('a').Value:=trim(combobox1.Text);
     open;
     unm:= fieldByName('mbf').AsInteger;
   end;
end;

procedure TXhForm.dbgrideh2cellclick(Column: TColumnEh);
begin
   with dmdata.KqmsADOQuery do
   begin
     if RecordCount > 0 then
      begin
        idlabel.Caption:=inttostr(dmdata.KqmsADOQuery.fieldbyname('id').AsInteger);
        combobox1.Text:= dmdata.KqmsADOQuery.fieldbyname('ql').AsString;
        edit1.Text:=inttostr(dmdata.KqmsADOQuery.fieldbyname('sl').AsInteger);
        edit2.Text:=dmdata.KqmsADOQuery.fieldbyname('qxhm').AsString;
        edit3.Text:=dmdata.KqmsADOQuery.fieldbyname('jxhm').AsString;
      end;
    end;
    edit4.Text:='';
   with dmdata.BjqlADOQuery do
   begin
     close;
     sql.Clear;
     sql.Add('select * from t_bjql where ql= :a');
     parameters.ParamByName('a').Value:=trim(combobox1.Text);
     open;
     unm:= fieldByName('mbf').AsInteger;
   end;
   button1.Enabled:=true;
   button2.Enabled:=false;
   // showmessage(inttostr(unm));
end;

procedure TXhForm.Button1Click(Sender: TObject);
var
  sl:integer;
  insertsl:double;
  km:string;
begin
   if (edit1.Text = '') or (edit2.Text = '') or (edit3.Text ='') or (edit4.Text = '')or(combobox1.Text = '') then
    exit;
   if dmdata.qsjzADOQuery.FieldByName('dbegin').AsDateTime > datetimepicker1.Date then
   begin
     showmessage('日期已小于本月范围,请重新选择!');
      datetimepicker1.Date:=dmdata.ADOTable_T_user['date'];
     exit;
   end;
   if (dmdata.qsjzADOQuery.FieldByName('dend').AsDateTime+1) < datetimepicker1.Date then
   begin
     showmessage('日期已大于本月范围,请重新选择!');
      datetimepicker1.Date:=dmdata.ADOTable_T_user['date'];
     exit;
   end;
   with dmdata.KqqsADOQuery do
     begin
       close;
       sql.Clear;
       sql.Add('select a.ql,b.ms_id,b.ql_id,b.rq,b.sl,b.qxhm,b.jxhm,b.kqbm from t_bjql as a inner join t_kqb as b on a.km = b.ql_id where (qt = 1) and (id=:a)' );
       parameters.ParamByName('a').Value:=strtoint(idlabel.Caption);
       open;
       if RecordCount > 0 then
       begin
          sl:= FieldByName('sl').AsInteger;
          if ((strtofloat(edit2.Text)-strtofloat(FieldByName('qxhm').AsString))<0) or (strtofloat(edit3.Text)>strtofloat(FieldByName('jxhm').AsString)) then
          begin
            showmessage('录入起始号码超出起始或结束号码');
            exit;
          end;
          insertsl:=(strtofloat(edit2.Text)-strtofloat(FieldByName('qxhm').AsString));
          //showmessage(floattostr(frac((strtofloat(edit2.Text)-strtofloat(FieldByName('qxhm').AsString))/unm)));
          if frac((strtofloat(edit2.Text)-strtofloat(FieldByName('qxhm').AsString))/unm)<>0 then
          begin
            showmessage('你所输入的起始号码不合法');
            exit;
          end;
         if (sl < strtofloat(edit1.Text)) then
         begin
           showmessage('领用数量超出部门未消数量');
           exit;
         end;
         if (trim(edit2.Text)=trim(FieldByName('qxhm').AsString)) then
          begin
            with dmdata.KqeditADOQuery do
            begin
              close;
              sql.Clear;
              sql.Add('update t_kqb set sl = :b,qxhm = :c where id = :a');
              parameters.ParamByName('a').Value:=strtofloat(idlabel.Caption);
              parameters.ParamByName('b').Value:=sl-strtofloat(edit1.Text);
              parameters.parambyname('c').value:=formatfloat(dm.DMData.pjlenstr,strtofloat(floattostr(strtofloat(edit3.text)+1)));
              Execsql;
            end;
          end
          else
          begin
              with dmdata.kqeditADOQuery do
              begin
                close;
                sql.Clear;
                sql.Add('insert into t_kqb(ms_id,ql_id,rq,sl,qxhm,jxhm,kqbm,qt) values(:a,:b,:c,:d,:e,:f,:g,:h)');
                parameters.ParamByName('a').Value:=dmdata.KqqsADOQuery.fieldbyname('ms_id').AsInteger;
                parameters.ParamByName('b').Value:=dmdata.KqqsADOQuery.fieldbyname('ql_id').AsString;
                parameters.parambyname('c').value:=datetostr(datetimepicker1.Date);
                parameters.ParamByName('d').Value:=insertsl/unm;
                parameters.ParamByName('e').Value:=formatfloat(dm.DMData.pjlenstr,strtofloat(dmdata.KqqsADOQuery.fieldbyname('qxhm').AsString));
                parameters.ParamByName('f').Value:=formatfloat(dm.DMData.pjlenstr,strtofloat(floattostr(strtofloat(edit2.Text)-1)));
                parameters.ParamByName('g').Value:=dmdata.KqqsADOQuery.fieldbyname('kqbm').AsString;
                parameters.ParamByName('h').Value:=1;
                Execsql;
              end;
              with dmdata.KqeditADOQuery do
              begin
               close;
               sql.Clear;
               sql.Add('update t_kqb set sl = :b,qxhm = :c where id = :a');
               parameters.ParamByName('a').Value:=strtofloat(idlabel.Caption);
               parameters.ParamByName('b').Value:=sl-insertsl/unm-strtofloat(edit1.Text);
               parameters.parambyname('c').value:=formatfloat(dm.DMData.pjlenstr,strtofloat(floattostr(strtofloat(edit3.text)+1)));
               Execsql;
              end;
           end;
        end;
      with dmdata.BmADOQuery do
      begin
        close;
        sql.Clear;
        sql.Add('select * from t_bm where dwbm = :a');
        parameters.ParamByName('a').Value:=trim(combobox2.Text);
        open;
        km:=trim(fieldbyname('km').AsString);
      end;
      with dmdata.xhADOQuery do
      begin
         close;
         sql.Clear;
          sql.Add('insert into t_xhb(ql_id,rq,sl,qxhm,jxhm,hxbm,qt,xhr,ms_id) values(:a,:b,:c,:d,:e,:f,:g,:h,:i)');
           parameters.ParamByName('a').Value:=dmdata.KqqsADOQuery.fieldbyname('ql_id').AsString;
           parameters.parambyname('b').value:=datetostr(datetimepicker1.Date);
           parameters.ParamByName('c').Value:=strtofloat(edit1.Text);
           parameters.ParamByName('d').Value:=formatfloat(dm.DMData.pjlenstr,strtofloat(edit2.Text));
           parameters.ParamByName('e').Value:=formatfloat(dm.DMData.pjlenstr,strtofloat(edit3.Text));
           parameters.ParamByName('f').Value:=trim(km);
           parameters.ParamByName('g').Value:=strtofloat(idlabel.Caption);
           parameters.ParamByName('h').Value:=trim(edit4.Text);
           parameters.ParamByName('i').Value:=dmdata.KqqsADOQuery.fieldbyname('ms_id').AsInteger;
           Execsql;
      end;
  end;
  delnewll;
  xhbmnewll;
  combobox2change(Sender);
  xhnewll;
  combobox1.Text:='';
  edit1.Text:='';
  edit2.Text:='';
  edit3.Text:='';
  edit4.Text:='';
  edit1.SetFocus;
  button1.Enabled:=false;
end;

procedure TXhForm.edit1chagne(Sender: TObject);
begin
  if ((edit1.Text <> '') and (edit2.Text <> '')) then
   begin
    edit3.Text:=formatfloat(dm.DMData.pjlenstr,strtofloat(edit1.Text)*unm+strtofloat(edit2.Text)-1);
   end
   else
     exit;
end;

procedure TXhForm.edit2change(Sender: TObject);
begin

⌨️ 快捷键说明

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