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

📄 unit_input_cgsh.~pas

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

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_cgsh = class(TForm_jc_child)
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Label2: TLabel;
    DBDateEdit1: TDBDateEdit;
    Label7: TLabel;
    DBEdit2: 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_print: 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;
    RMReport1: TRMReport;
    RMDBDataSet1: TRMDBDataSet;
    procedure BitBtn_quitClick(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 BitBtn_printClick(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_cgsh: Tform_input_cgsh;

implementation

uses Unit_main, Unit_get_gys, Unit_get_sp;

{$R *.dfm}

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

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

procedure Tform_input_cgsh.ADOQuery1AfterClose(DataSet: TDataSet);
begin
   ADOQuery2.Close;
end;

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

procedure Tform_input_cgsh.BitBtn_nextClick(Sender: TObject);
begin
   if not ADOQuery1.Active then exit;
   //找到最近的主表ID
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select min(t1000) as id from t10 where t1000>'+ADOQuery1.fieldbyname('t1000').AsString;
   ADOQuery3.Open;
   if ADOQuery3.fieldbyname('id').asstring = '' then
      showmessage('当前已经是最后一张单据!')
   else
   begin
     ADOQuery1.Close;
     ADOQuery1.SQL.Text :='select * from t10 where t1000='+ADOQuery3.fieldbyname('id').asstring;//查出生产入库表的资料
     ADOQuery1.open; //查出生产入库表的资料,并显示
   end;
end;

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

function Tform_input_cgsh.f_get_bh(strdate:string):STRING;
var i : integer;
begin
   //得到最大的单号
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select max(t1001) as bh from t10 where left(t1001,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_cgsh.BitBtn_saveClick(Sender: TObject);
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;
   //刷新显示
   ADOQuery1.AfterScroll(ADOQuery1);
end;

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

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

procedure Tform_input_cgsh.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('t1000').AsString;
   //删除主单,在此不用删除子单,因为有级联更新
   ADOQuery1.Delete;
   ADOQuery1.Close;
   ADOQuery2.Close;
   //找到最近的主表ID
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select min(t1000) as id from t10 where t1000>'+id;
   ADOQuery3.Open;
   if ADOQuery3.FieldByName('id').AsString = '' then    //如果没有下一单,那么将显示上一单
   begin
      ADOQuery3.Close;
      ADOQuery3.SQL.Text := 'select max(t1000) as id from t10 where t1000<'+id;
      ADOQuery3.Open;
      if ADOQuery3.FieldByName('id').AsString <> '' then
      begin
         ADOQuery1.Close;
         ADOQuery1.SQL.Text := sqlstr + ' where t1000='+ADOQuery3.FieldByName('id').AsString;
         ADOQuery1.open;
      end;
   end
   else
   begin
      ADOQuery1.Close;
      ADOQuery1.SQL.Text := sqlstr + ' where t1000='+ADOQuery3.FieldByName('id').AsString;
      ADOQuery1.open;
   end;
end;

procedure Tform_input_cgsh.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 t11(t1104,t1101) values('+ADOQuery1.fieldbyname('t1000').AsString+','+
      inttostr(form_get_sp.sp_id)+')';
   ADOQuery3.ExecSQL;
   //刷新显示
   BitBtn_save.Click;
   ADOQuery2.Close;
   ADOQuery2.SQL.Text:='select *,(select t0702 from t07 where t0700=t1101)  as 商品名称, '+
                        '(select t0707 from t07 where t0700=t1101)  as 单位 '+
                        ' from t11 where t1104='+adoquery1.fieldbyname('t1000').AsString;
   adoquery2.Open;
   adoquery2.Last;
   DBGrid1.SetFocus;
   DBGrid1.SelectedIndex := 2;
end;

procedure Tform_input_cgsh.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_cgsh.BitBtn_endClick(Sender: TObject);
begin
   if not ADOQuery1.Active then exit;
   //找到最后的主表ID
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select max(t1000) as id from t10';
   ADOQuery3.Open;
   ADOQuery1.Close;
   ADOQuery1.SQL.Text := sqlstr + ' where t1000='+ADOQuery3.fieldbyname('id').asstring;
   ADOQuery1.open;
end;

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

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

procedure Tform_input_cgsh.FormShow(Sender: TObject);
begin
   inherited;
   //显示主表
   ADOQuery3.Close;
   ADOQuery3.SQL.Text := 'select max(t1000) as id from t10';
   ADOQuery3.Open;
   ADOQuery1.Close;
   if ADOQuery3.FieldByName('id').AsString <> '' then
   begin
      ADOQuery1.SQL.Text :='select * from t10 where t1000='+ADOQuery3.fieldbyname('id').AsString;
      ADOQuery1.open;
   end;
end;

procedure Tform_input_cgsh.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
   //刷新显示子表
   ADOQuery2.Close;
   if DataSet.fieldbyname('t1000').AsString <> '' then
   begin
      ADOQuery2.Close;
      ADOQuery2.SQL.Text := sqlstr2 + ' where t1104='+DataSet.fieldbyname('t1000').AsString;
      ADOQuery2.Open;
   end;
end;

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

procedure Tform_input_cgsh.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
      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_cgsh.BitBtn_printClick(Sender: TObject);
begin
   if ADOQuery1.RecordCount = 0 then exit;
   RMReport1.LoadFromFile('Unit_input_cgsh.rmf');
   RMReport1.ShowReport;
end;

end.

⌨️ 快捷键说明

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