📄 absent_bom.pas
字号:
unit Absent_BOM;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DBCtrls, Mask, ExtCtrls, Grids, DBGrids,
ComCtrls, ADODB, DB;
type
TForm_Absent_BOM = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
DBGrid1: TDBGrid;
Panel3: TPanel;
Panel4: TPanel;
Label4: TLabel;
Panel6: TPanel;
TabSheet2: TTabSheet;
Panel1: TPanel;
Panel5: TPanel;
Label9: TLabel;
Label10: TLabel;
Label19: TLabel;
Label7: TLabel;
DS_absent_BOM: TDataSource;
ADOQ_absent_BOM: TADOQuery;
Label12: TLabel;
Label3: TLabel;
ADOQ_absent_BOMlog_id: TAutoIncField;
ADOQ_absent_BOMord_id: TStringField;
ADOQ_absent_BOMmat_id: TStringField;
ADOQ_absent_BOMcust_name: TStringField;
ADOQ_absent_BOMcostume_name: TStringField;
ADOQ_absent_BOMseq_name: TStringField;
ADOQ_absent_BOMmat_name: TStringField;
GroupBox2: TGroupBox;
DBGrid2: TDBGrid;
Bevel1: TBevel;
Label1: TLabel;
ComboBox_matype: TComboBox;
ADOQ_absent_BOMunit: TStringField;
Panel7: TPanel;
Panel8: TPanel;
Label11: TLabel;
ADOQ_absent_BOMnum: TFloatField;
Label25: TLabel;
Edit3: TEdit;
Bit_Ser2: TBitBtn;
Label2: TLabel;
Bevel2: TBevel;
Panel2: TPanel;
DBNavigator1: TDBNavigator;
AddBtn: TBitBtn;
EdtBtn: TBitBtn;
DelBtn: TBitBtn;
ExtBtn: TBitBtn;
Panel9: TPanel;
SaveBtn: TBitBtn;
CancelBtn: TBitBtn;
BitBtn4: TBitBtn;
ADOQ_absent_BOMtemp_key: TStringField;
DBLookup_order: TComboBox;
Label8: TLabel;
Editcloth: TEdit;
adoq_temp: TADOQuery;
ADOQ_absent_BOMclo_name: TStringField;
DBE_mat_id: TEdit;
DBE_matname: TEdit;
DBE_custname: TEdit;
DBE_costume: TEdit;
Label_unit: TLabel;
DBComBox_ordid: TComboBox;
DBComBox_seq_name: TComboBox;
DBE_num: TEdit;
DS_material: TDataSource;
ADOQ_material: TADOQuery;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ComboBox_matypeChange(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure AddBtnClick(Sender: TObject);
procedure EdtBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure DelBtnClick(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
procedure PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
procedure Bit_Ser2Click(Sender: TObject);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure DS_absent_BOMStateChange(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure DBLookup_orderKeyPress(Sender: TObject; var Key: Char);
procedure DBLookup_orderChange(Sender: TObject);
procedure DS_absent_BOMDataChange(Sender: TObject; Field: TField);
procedure DBComBox_ordidChange(Sender: TObject);
procedure DS_materialDataChange(Sender: TObject; Field: TField);
procedure FormCreate(Sender: TObject);
procedure DBComBox_ordidKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
log_id:integer;
procedure refreshdb;
procedure add_matype;
procedure add_seqname;
function operator_absBOM(ope_type:integer; ord_id,temp_key,mat_id:string;temp_num:real):boolean;
public
{ Public declarations }
end;
var
Form_Absent_BOM: TForm_Absent_BOM;
implementation
uses DATA, sharevar, sharefun;
{$R *.dfm}
procedure TForm_Absent_BOM.add_matype;
begin
with adoq_temp do
begin
close; sql.Clear;
sql.Add('select matype_name from material_type');
execsql; open;
ComboBox_matype.Items.Clear;
ComboBox_matype.Items.Add(' ');
First;
while not eof do
begin
ComboBox_matype.Items.Add(fieldvalues['matype_name']);
next;
end;
close; sql.Clear;
sql.Add('select ord_id from order_msg');
execsql; open;
DBComBox_ordid.Items.Clear;
DBLookup_order.Items.clear;
First;
while not eof do
begin
DBLookup_order.Items.Add(fieldvalues['ord_id']);
DBComBox_ordid.Items.Add(fieldvalues['ord_id']);
next;
end;
close;
end;
end;
procedure TForm_absent_bom.add_seqname;
begin
with adoq_temp do
begin
close; sql.Clear;
sql.Add('select seq_name from sequence_price where ord_id=:ord_id');
parameters.ParamValues['ord_id']:=trim(DBComBox_ordid.Text);
execsql; open; First;
DBComBox_seq_name.Text:='';
DBComBox_seq_name.Items.Clear;
if recordcount=0 then
begin
msgErr(handle,'该订单下无工序,请先添加工序!');
abort; exit;
end;
while not eof do
begin
DBComBox_seq_name.Items.Add(fieldvalues['seq_name']);
next;
end;
close;
end;
end;
function TForm_absent_bom.operator_absBOM(ope_type:integer; ord_id,temp_key,mat_id:string;temp_num:real):boolean;
begin
result:=false;
if ope_type=3 then msgerr(handle, '辅料需求表记录操作失败!(ope_type=3)');
case ope_type of
//辅料增加
0:
begin
with adoq_temp do
begin
Close; SQL.Clear;
SQL.Add('select * from absent_bom where ord_id=:ord_id and temp_key =:temp_key and mat_id=:mat_id');
Parameters.ParamValues['ord_id']:=ord_id;
Parameters.ParamValues['temp_key']:=temp_key;
Parameters.ParamValues['mat_id']:=mat_id;
try
Open;
except
msgerr(handle, '辅料需求表记录操作失败!');
Close; exit;
end;
end;
if adoq_temp.RecordCount>0 then
begin
MsgErr(handle,'该订单工序下已存在此辅料!');
exit;
end;
with adoq_temp do
begin
append;
fieldvalues['ord_id']:=ord_id;
fieldvalues['temp_key']:=temp_key;
fieldvalues['mat_id']:=mat_id;
fieldvalues['num']:=temp_num;
try
post;
except
msgerr(handle, '辅料需求表记录添加失败!');
Close; exit;
end;
log_id:=fieldvalues['log_id'];
end;
result:=true;
end;
//辅料修改
1:
with adoq_temp do
begin
Close; SQL.Clear;
SQL.Add('select * from absent_bom where ord_id=:ord_id and temp_key =:temp_key and mat_id=:mat_id');
Parameters.ParamValues['ord_id']:=ord_id;
Parameters.ParamValues['temp_key']:=temp_key;
Parameters.ParamValues['mat_id']:=mat_id;
try
Open; if recordcount=0 then exit;
except
msgerr(handle, '辅料需求表记录操作失败!');
Close; exit;
end;
edit;
fieldvalues['num']:=temp_num;
try
post;
except
msgerr(handle, '辅料需求表记录修改失败!');
Close; exit;
end;
log_id:=fieldvalues['log_id'];
result:=true;
end;
//辅料删除
2:
with adoq_temp do
begin
Close; SQL.Clear;
SQL.Add('select * from absent_bom where ord_id=:ord_id and temp_key =:temp_key and mat_id=:mat_id');
Parameters.ParamValues['ord_id']:=ord_id;
Parameters.ParamValues['temp_key']:=temp_key;
Parameters.ParamValues['mat_id']:=mat_id;
try
Open; if recordcount=0 then exit;
except
msgerr(handle, '辅料需求表记录操作失败!');
Close; exit;
end;
try
adoq_temp.Delete;
except
MsgErr(handle,'数据删除失败!');
exit;
end;
result:=true;
end;
end;
adoq_temp.close;
end;
procedure TForm_absent_bom.refreshdb;
begin
with adoq_material do
begin
close;
sql.Strings[2]:='';
open;
end;
with ADOQ_absent_BOM do
begin
close;
execsql; open;
end;
end;
procedure TForm_Absent_BOM.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
with ADOQ_absent_BOM do begin if active then close; end;
with adoq_material do begin if active then close; end;
action:=cafree;
end;
procedure TForm_Absent_BOM.ComboBox_matypeChange(Sender: TObject);
var
mat_type: string;
begin
mat_type:=trim(ComboBox_matype.Text);
with ADOQ_material do
begin
close;
if mat_type='' then
begin
sql.Strings[2]:='';
open; exit;
end;
sql.Strings[2]:='and b.matype_name=:matype_name';
parameters.ParamValues['matype_name']:=mat_type;
open;
end;
end;
procedure TForm_Absent_BOM.PageControl1Change(Sender: TObject);
begin
if trim(DBLookup_order.Text)='' then exit;
if not ADOQ_absent_BOM.Active then exit;
if PageControl1.ActivePageIndex=0 then refreshdb;
if PageControl1.ActivePageIndex=1 then
begin
with ADOQ_material do
begin
close;
SQL.Strings[2]:='';
open;
end;
with ADOQ_absent_BOM do
begin
if recordcount=0 then exit;
DBE_mat_id.Clear; DBE_matname.clear;
DBE_custname.Clear; DBE_costume.Clear;
Editcloth.Clear; Label_unit.Caption:='';
DBComBox_ordid.Text:=''; DBComBox_seq_name.Clear;
DBE_num.clear;
DBE_mat_id.text:=fieldvalues['mat_id'];
DBE_matname.text:=fieldvalues['mat_name'];
DBE_custname.text:=fieldvalues['cust_name'];
DBE_costume.Text:=fieldvalues['costume_name'];
Editcloth.text:=fieldvalues['clo_name'];
Label_unit.Caption:=fieldvalues['unit'];
DBComBox_ordid.Text:=fieldvalues['ord_id'];
DBComBox_seq_name.text:=fieldvalues['seq_name'];
DBE_num.Text:=floattostr(fieldvalues['num']);
if ADOq_material.Active then ADOq_material.Locate('mat_id',fieldvalues['mat_id'],[]);
end;
end;
end;
procedure TForm_Absent_BOM.AddBtnClick(Sender: TObject);
begin
if not ADOQ_absent_BOM.Active then exit;
if ADOQ_absent_BOM.State in [dsinsert,dsedit] then exit;
PageControl1.ActivePageIndex:=1;
ADOQ_absent_BOM.Append;
if not ADOQ_material.Active then ADOQ_material.Open;
if trim(DBLookup_order.Text)<>'' then
begin
DBComBox_ordid.ItemIndex:=DBLookup_order.ItemIndex;
DBComBox_ordidChange(self);
end;
DBE_num.Clear;
end;
procedure TForm_Absent_BOM.EdtBtnClick(Sender: TObject);
begin
if not ADOQ_absent_BOM.Active then exit;
with ADOQ_absent_BOM do
begin
if State in [dsinsert,dsedit] then exit;
if RecordCount<1 then exit;
end;
PageControl1.ActivePageIndex:=1;
ADOQ_absent_BOM.Edit;
end;
procedure TForm_Absent_BOM.CancelBtnClick(Sender: TObject);
begin
if not ADOQ_absent_BOM.Active then exit;
ADOQ_absent_BOM.cancel;
end;
procedure TForm_Absent_BOM.DelBtnClick(Sender: TObject);
var
temp_ordid, temp_seqname, temp_key, temp_matid, temp_matname: string;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -