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

📄 unit_input_xs.~pas

📁 DELPHI 编写的绣花厂管理软件
💻 ~PAS
字号:
unit Unit_input_xs;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit_jc_child, Grids, DBGrids, ExtCtrls, StdCtrls, Mask, DBCtrls,
  ToolEdit, RXDBCtrl, Buttons, DB, ADODB, RM_dset, RM_dbset, RM_class;

type
  Tform_input_xssk = class(TForm_jc_child)
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Label2: TLabel;
    DBDateEdit1: TDBDateEdit;
    Label3: TLabel;
    Edit_gys: TEdit;
    SpeedButton1: TSpeedButton;
    Label5: TLabel;
    Label6: TLabel;
    DBComboBox2: TDBComboBox;
    DBComboBox3: TDBComboBox;
    Label7: TLabel;
    DBEdit2: TDBEdit;
    Label8: TLabel;
    DBEdit3: TDBEdit;
    Label9: TLabel;
    DBEdit4: TDBEdit;
    Panel2: TPanel;
    BitBtn_new_dj: TBitBtn;
    BitBtn_save: TBitBtn;
    BitBtn_delete_dj: TBitBtn;
    BitBtn_new_sp: TBitBtn;
    BitBtn_delete_sp: TBitBtn;
    BitBtn_quit: TBitBtn;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    ADOQuery2: TADOQuery;
    ADOQuery3: TADOQuery;
    BitBtn_prior: TBitBtn;
    BitBtn_next: TBitBtn;
    BitBtn_end: TBitBtn;
    Panel3: TPanel;
    Label11: TLabel;
    Edit_dh: TEdit;
    BitBtn_find: TBitBtn;
    Label12: TLabel;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    Label13: TLabel;
    RMReport1: TRMReport;
    RMDBDataSet1: TRMDBDataSet;
    procedure BitBtn_quitClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ADOQuery1AfterClose(DataSet: TDataSet);
    procedure BitBtn_priorClick(Sender: TObject);
    procedure BitBtn_nextClick(Sender: TObject);
    procedure BitBtn_new_djClick(Sender: TObject);
    procedure BitBtn_saveClick(Sender: TObject);
    procedure ADOQuery1AfterInsert(DataSet: TDataSet);
    procedure ADOQuery2AfterInsert(DataSet: TDataSet);
    procedure BitBtn_delete_djClick(Sender: TObject);
    procedure BitBtn_new_spClick(Sender: TObject);
    procedure BitBtn_delete_spClick(Sender: TObject);
    procedure BitBtn_endClick(Sender: TObject);
    procedure Edit_dhKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BitBtn_findClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ADOQuery1AfterScroll(DataSet: TDataSet);
    procedure DBDateEdit1Change(Sender: TObject);
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
    sqlstr,sqlstr2 : string;
    function f_get_bh(strdate:string):STRING;      //跟据日期得到单号
  public
    { Public declarations }
     main_tab,child_tab,main_key,child_key : string;
  end;

var
  form_input_xssk: Tform_input_xssk;

implementation

uses Unit_main, Unit_get_kh, Unit_get_sp;

{$R *.dfm}

procedure Tform_input_xssk.BitBtn_quitClick(Sender: TObject);
begin
   self.Close;
end;

procedure Tform_input_xssk.SpeedButton1Click(Sender: TObject);
begin
   if ADOQuery1.Active = false then exit;
   if ADOQuery1.RecordCount = 0 then exit;
   Form_get_kh.ShowModal;
   if Form_get_kh.kh_id = 0 then exit;
   ADOQuery1.edit;
   ADOQuery1.FieldByName('t0304').AsInteger := Form_get_kh.kh_id;
   Edit_gys.Text := Form_get_kh.kh_mc;
end;

procedure Tform_input_xssk.FormCreate(Sender: TObject);
begin
   inherited;
   sqlstr := ADOQuery1.sql.text;
   sqlstr2 := ADOQuery2.sql.text;
end;

procedure Tform_input_xssk.ADOQuery1AfterClose(DataSet: TDataSet);
begin
   Edit_gys.Text := '';
   ADOQuery2.Close;
end;

procedure Tform_input_xssk.BitBtn_priorClick(Sender: TObject);
begin
   if not ADOQuery1.Active then exit;
   //找到最近的主表ID
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select max(t0300) as id from t03 where t0300<'+ADOQuery1.fieldbyname('t0300').AsString;
   ADOQuery3.Open;
   if ADOQuery3.fieldbyname('id').asstring = '' then
      showmessage('当前已经是第一张单据!')
   else
   begin
     ADOQuery1.Close;
     ADOQuery1.SQL.Text := sqlstr + ' where t0300='+ADOQuery3.fieldbyname('id').asstring;
     ADOQuery1.open;
   end;
end;

procedure Tform_input_xssk.BitBtn_nextClick(Sender: TObject);
begin
   if not ADOQuery1.Active then exit;
   //找到最近的主表ID
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select min(t0300) as id from t03 where t0300>'+ADOQuery1.fieldbyname('t0300').AsString;
   ADOQuery3.Open;
   if ADOQuery3.fieldbyname('id').asstring = '' then
      showmessage('当前已经是最后一张单据!')
   else
   begin
     ADOQuery1.Close;
     ADOQuery1.SQL.Text := sqlstr + ' where t0300='+ADOQuery3.fieldbyname('id').asstring;
     ADOQuery1.open;
   end;
end;

procedure Tform_input_xssk.BitBtn_new_djClick(Sender: TObject);
var id : integer;
begin
   //插入记录到主表
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'insert into t03(t0301,t0307) values('''+f_get_bh(formatdatetime('YYYYMMDD',form_main.f_get_now))+
      ''','''+gs_username+''')';
   ADOQuery3.ExecSQL;
   //得到刚插入那条记录的ID
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select max(t0300) as id from t03';
   ADOQuery3.Open;
   id := ADOQuery3.fieldbyname('id').AsInteger;
   //刷新主表显示
   ADOQuery1.Close;
   ADOQuery1.SQL.Text := sqlstr + ' where t0300='+inttostr(id);
   ADOQuery1.open;
end;

function Tform_input_xssk.f_get_bh(strdate:string):STRING;
var i : integer;
begin
   //得到最大的单号
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select max(t0301) as bh from t03 where left(t0301,8)='''+strdate+'''';
   ADOQuery3.Open;
   if ADOQuery3.fieldbyname('bh').AsString='' then      //当天没有单子赋001
      f_get_bh := strdate+'001'
   else
   begin                        //加一
      i := strtoint(copy(ADOQuery3.fieldbyname('bh').AsString,9,3))+1;
      if i<10 then f_get_bh := strdate+'00'+inttostr(i);
      if (i<100) and (i>9) then f_get_bh := strdate+'0'+inttostr(i);
      if i>99 then f_get_bh := strdate+inttostr(i);
   end;
end;


procedure Tform_input_xssk.BitBtn_saveClick(Sender: TObject);
var i:integer;
begin
   if ADOQuery1.RecordCount = 0 then exit;
   ADOQuery1.Edit;
   ADOQuery1.Post;
   if ADOQuery2.Active = false then exit;
   if ADOQuery2.RecordCount = 0 then exit;
   ADOQuery2.Edit;
   ADOQuery2.Post;
   //合计金额
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select sum(t0404) as je from t04 where t0401='+ADOQuery1.fieldbyname('t0300').AsString;
   ADOQuery3.Open;
   i:=adoquery1.RecNo;
   ADOQuery1.Edit;
   ADOQuery1.FieldByName('t0306').AsFloat := ADOQuery3.fieldbyname('je').AsFloat;
   ADOQuery1.Post;
   //刷新显示
   adoquery1.Close;
   adoquery1.Open;
   adoquery1.RecNo:=i;
end;

procedure Tform_input_xssk.ADOQuery1AfterInsert(DataSet: TDataSet);
begin
   dataset.Delete;
end;

procedure Tform_input_xssk.ADOQuery2AfterInsert(DataSet: TDataSet);
begin
   dataset.Delete;
end;

procedure Tform_input_xssk.BitBtn_delete_djClick(Sender: TObject);
var id : string;
begin
   if not ADOQuery1.Active then exit;
   if ADOQuery1.RecordCount = 0 then exit;
   if MessageDlg('你确定要删除这张单据吗?', mtconfirmation,[mbYes,mbNo], 0)<>mrYes then exit;
   id := ADOQuery1.fieldbyname('t0300').AsString;
   //删除主单,在此不用删除子单,因为有级联更新
   ADOQuery1.Delete;
   ADOQuery1.Close;
   ADOQuery2.Close;
   //找到最近的主表ID
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select min(t0300) as id from t03 where t0300>'+id;
   ADOQuery3.Open;
   if ADOQuery3.FieldByName('id').AsString = '' then
   begin
      ADOQuery3.Close;
      ADOQuery3.SQL.Text := 'select max(t0300) as id from t03 where t0300<'+id;
      ADOQuery3.Open;
      if ADOQuery3.FieldByName('id').AsString <> '' then
      begin
         ADOQuery1.Close;
         ADOQuery1.SQL.Text := sqlstr + ' where t0300='+ADOQuery3.FieldByName('id').AsString;
         ADOQuery1.open;
      end;
   end
   else
   begin
      ADOQuery1.Close;
      ADOQuery1.SQL.Text := sqlstr + ' where t0300='+ADOQuery3.FieldByName('id').AsString;
      ADOQuery1.open;
   end;
end;

procedure Tform_input_xssk.BitBtn_new_spClick(Sender: TObject);
begin
   if not ADOQuery1.Active then exit;
   if ADOQuery1.RecordCount = 0 then exit;
   form_get_sp.ShowModal;
   if form_get_sp.sp_id = 0 then exit;
   //插入子表
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'insert into t04(t0401,t0402) values('+ADOQuery1.fieldbyname('t0300').AsString+','+
                          inttostr(form_get_sp.sp_id)+')';
   ADOQuery3.ExecSQL;
   //刷新显示
   BitBtn_save.Click;
   ADOQuery2.Close;
   ADOQuery2.Open;
   ADOQuery2.Last;
   DBGrid1.SetFocus;
   DBGrid1.SelectedIndex := 2;
end;

procedure Tform_input_xssk.BitBtn_delete_spClick(Sender: TObject);
begin
   if not ADOQuery1.Active then exit;
   if ADOQuery2.Active = false then exit;
   if ADOQuery2.RecordCount > 0 then ADOQuery2.Delete;
end;

procedure Tform_input_xssk.BitBtn_endClick(Sender: TObject);
begin
   if not ADOQuery1.Active then exit;
   //找到最后的主表ID
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select max(t0300) as id from t03';
   ADOQuery3.Open;
   ADOQuery1.Close;
   ADOQuery1.SQL.Text := sqlstr + ' where t0300='+ADOQuery3.fieldbyname('id').asstring;
   ADOQuery1.open;
end;

procedure Tform_input_xssk.Edit_dhKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if key <> 13 then exit;
   BitBtn_find.Click;
end;

procedure Tform_input_xssk.BitBtn_findClick(Sender: TObject);
begin
   //找到最近的主表ID
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select t0300 as id from t03 where t0301='''+trim(Edit_dh.Text)+'''';
   ADOQuery3.Open;
   if ADOQuery3.RecordCount = 0 then
      showmessage('找不到您输入的单据!')
   else
   begin
     ADOQuery1.Close;
     ADOQuery1.SQL.Text := sqlstr + ' where t0300='+ADOQuery3.fieldbyname('id').asstring;
     ADOQuery1.open;
   end;
end;

procedure Tform_input_xssk.FormShow(Sender: TObject);
begin
   inherited;
   //产生付款方式列表
   ADOQuery3.close;
   ADOQuery3.SQL.text := 'select * from t13';
   ADOQuery3.Open;
   while not ADOQuery3.Eof do
   begin
      DBComboBox2.items.Add(ADOQuery3.fieldbyname('t1301').AsString);
      ADOQuery3.Next;
   end;
   //产生业务员列表
   ADOQuery3.close;
   ADOQuery3.SQL.text := 'select * from t01';
   ADOQuery3.Open;
   while not ADOQuery3.Eof do
   begin
      DBComboBox3.items.Add(ADOQuery3.fieldbyname('t0101').AsString);
      ADOQuery3.Next;
   end;
   //显示主表
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select max(t0300) as id from t03';
   ADOQuery3.Open;
   ADOQuery1.Close;
   if ADOQuery3.FieldByName('id').AsString <> '' then
   begin
      ADOQuery1.SQL.Text := sqlstr + ' where t0300='+ADOQuery3.fieldbyname('id').asstring;
      ADOQuery1.open;
   end;
end;

procedure Tform_input_xssk.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
   //刷新显示客户
   Edit_gys.Text := '';
   if DataSet.fieldbyname('t0304').AsString <> '' then
   begin
      ADOQuery3.Close;
      ADOQuery3.SQL.Text := 'select * from t02 where t0200='+DataSet.fieldbyname('t0304').AsString;
      ADOQuery3.Open;
      Edit_gys.Text := ADOQuery3.fieldbyname('t0202').AsString;
   end;
   //刷新显示子表
   ADOQuery2.Close;
   if DataSet.fieldbyname('t0300').AsString <> '' then
   begin
      ADOQuery2.Close;
      ADOQuery2.SQL.Text := sqlstr2 + ' where t0401='+DataSet.fieldbyname('t0300').AsString;
      ADOQuery2.Open;
   end;
end;

procedure Tform_input_xssk.DBDateEdit1Change(Sender: TObject);
begin
   if ADOQuery1.Active = false then exit;
   if ADOQuery1.RecordCount = 0 then exit;
   if copy(ADOQuery1.FieldByName('t0301').AsString,1,8)<>formatdatetime('YYYYMMDD',ADOQuery1.fieldbyname('t0302').AsDateTime) then
   begin
      ADOQuery1.Edit;
      ADOQuery1.FieldByName('t0301').AsString := f_get_bh(formatdatetime('YYYYMMDD',ADOQuery1.fieldbyname('t0302').AsDateTime));
      ADOQuery1.Post;
   end;
end;

procedure Tform_input_xssk.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if not ADOQuery1.Active then exit;
   if ADOQuery2.RecordCount = 0 then exit;
   if key <> 13 then exit;
   if DBGrid1.SelectedIndex + 1 < DBGrid1.FieldCount then
   begin
      if DBGrid1.SelectedIndex = 4 then   //产生金额
      begin
         ADOQuery2.Edit;
         ADOQuery2.Post;
         ADOQuery2.Edit;
         ADOQuery2.FieldByName('t0404').AsFloat := ADOQuery2.FieldByName('t0403').AsFloat * ADOQuery2.FieldByName('t0406').AsFloat;
         ADOQuery2.Post;
      end;
      DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + 1;
   end
   else
      if ADOQuery2.RecNo = ADOQuery2.RecordCount then
         BitBtn_new_sp.Click
      else
      begin
         ADOQuery2.Next;
         DBGrid1.SelectedIndex := 2;
      end;
end;

procedure Tform_input_xssk.BitBtn1Click(Sender: TObject);
begin
   if ADOQuery1.Active = false then exit;
   if ADOQuery1.RecordCount = 0 then exit;
   if Edit_gys.Text = '' then
   begin
      showmessage('请选择客户!');
      exit;
   end;

end;

end.

⌨️ 快捷键说明

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