📄 sequence_price.pas
字号:
unit Sequence_price;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, StdCtrls, Mask, Buttons, Grids, DBGrids, ComCtrls, DB,
ADODB, ExtCtrls, ToolWin, ImgList, RpCon, RpConDS, RpBase, RpSystem,
RpDefine, RpRave;
type
TForm_seq_price = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
DBGrid1: TDBGrid;
TabSheet2: TTabSheet;
Panel1: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Label9: TLabel;
Label10: TLabel;
Label19: TLabel;
DBEdit1: TDBEdit;
DBE_seq_name: TDBEdit;
GroupBox1: TGroupBox;
Label3: TLabel;
Label12: TLabel;
Label15: TLabel;
Label2: TLabel;
Label1: TLabel;
Panel2: TPanel;
AddBtn: TBitBtn;
EdtBtn: TBitBtn;
DelBtn: TBitBtn;
SaveBtn: TBitBtn;
CancelBtn: TBitBtn;
ExtBtn: TBitBtn;
Label18: TLabel;
Label7: TLabel;
Label5: TLabel;
Label6: TLabel;
ADOQ_order_msg: TADOQuery;
DS_price: TDataSource;
ADOT_price: TADOTable;
StringField3: TStringField;
StringField4: TStringField;
StringField6: TStringField;
FloatField1: TFloatField;
DBLookup_ordid: TDBComboBox;
Label4: TLabel;
Panel6: TPanel;
Edit1: TEdit;
Edit2: TEdit;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
DBE_seqid: TDBEdit;
Panel7: TPanel;
Label11: TLabel;
Panel8: TPanel;
adoq_temp: TADOQuery;
DBLookupComboBox1: TComboBox;
ADOT_pricetemp_key: TStringField;
ADOT_priceseq_id: TStringField;
Label8: TLabel;
Editcustmer: TEdit;
Editprice: TEdit;
Editname: TEdit;
Editnum: TEdit;
Editmoney: TEdit;
Editcloth: TEdit;
ADOQ_order_msgcust_name: TStringField;
ADOQ_order_msgclo_name: TStringField;
ADOQ_order_msgcostume_name: TStringField;
ADOQ_order_msgnum: TIntegerField;
ADOQ_order_msgunit_price: TBCDField;
ADOQ_order_msgmoney: TBCDField;
ADOT_priceord_id: TStringField;
ADOQ_order_msgord_id: TStringField;
PrtBtn: TBitBtn;
RvProject1: TRvProject;
RvSystem1: TRvSystem;
Rv_Sequence_price: TRvDataSetConnection;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure AddBtnClick(Sender: TObject);
procedure EdtBtnClick(Sender: TObject);
procedure DelBtnClick(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
procedure PageControl1Change(Sender: TObject);
procedure DBLookup_ordidClick(Sender: TObject);
procedure DBLookupComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure DBLookupComboBox1Change(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure DS_priceStateChange(Sender: TObject);
procedure ADOT_priceAfterInsert(DataSet: TDataSet);
procedure ADOT_priceAfterEdit(DataSet: TDataSet);
procedure DBLookup_ordidChange(Sender: TObject);
procedure PrtBtnClick(Sender: TObject);
private
{ Private declarations }
edit_seqname: string;
edit_seqprice:real;
procedure refreshdb;
procedure add_ordid_item;
procedure account_unitprice;
function Get_seqid(ord_id: string; var seq_id:string):boolean;
public
{ Public declarations }
end;
var
Form_seq_price: TForm_seq_price;
implementation
uses sharevar, sharefun, data;
{$R *.dfm}
//添加订单批号于 [DBLookup_ordid]下拉框内
procedure TForm_seq_price.add_ordid_item;
begin
with adoq_order_msg do
begin
close; open;
DBLookup_ordid.Items.Clear;
DBLookupComboBox1.Items.Clear;
close; open; First;
while not eof do
begin
DBLookup_ordid.Items.Add(fieldvalues['ord_id']);
DBLookupComboBox1.Items.Add(fieldvalues['ord_id']);
next;
end;
end;
end;
//根据订单批号及原有该订单下的工序编号得到新增的工序编号(如:sequence_1、sequence_2...)
function TForm_seq_price.Get_seqid(ord_id: string; var seq_id:string):boolean;
var
rec_cou, tmpid, i: integer;
begin
result:=false;
with adoq_temp do
begin
close; sql.Clear;
sql.Add('select seq_id from sequence_price where ord_id=:ord_id order by seq_id asc');
Parameters.ParamValues['ord_id']:=ord_id;
try
execsql; open;
rec_cou:=recordcount;
if Rec_Cou<1 then
begin
seq_id:='sequence_1';
result:=true;
Close; exit;
end;
tmpID:=1;
for i:=0 to Rec_Cou-1 do
begin
if not locate('seq_id','sequence_'+inttostr(tmpID),[loCaseInsensitive]) then
begin
seq_id:='sequence_'+inttostr(tmpid);
result:=true; Close; exit;
end;
tmpID:=succ(tmpID);
end;
except
exit;
end;
end;
seq_id:='sequence_'+inttostr(tmpid);
result:=true;
end;
//如果工序发料表(OutBOM_Log)中无对应的工序编号则修改表(添加刚刚新增的工序编号列)
{
function TForm_seq_price.check_Outbom_table(seq_id: string; var comp_bool: boolean):boolean;
label goto_line;
var
adoq_temp, adoq_add:Tadoquery;
i, fld_cou: integer;
fld_name: string;
begin
result:=false;
with adoq_temp do
begin
adoq_temp:=Tadoquery.Create(nil);
adoq_temp.Connection:=datamod.ADOCon;
close; sql.Clear;
sql.Add('select TOP 0 * from outbom_log');
execsql; open;
fld_cou:=adoq_temp.FieldCount;
comp_bool:=true;
for I:=7 to fld_cou-1 do
begin
fld_name:=adoq_temp.Fields.Fields[I].FieldName;
if seq_id=fld_name then begin comp_bool:=false; close; free; goto goto_line end;
end;
close; free;
end;
goto_line:
if not comp_bool then exit;
with adoq_add do
begin
adoq_add:=Tadoquery.Create(nil);
Connection:=datamod.ADOCon;
close; sql.Clear;
sql.Add('Alter table outbom_log add '+seq_id+' int null references employee(empid)');
try
execsql;
except
result:=false; close; free; exit;
end;
result:=true; close; free; exit;
end;
end;
}
procedure TForm_seq_price.refreshdb;
begin
with ADOQ_order_msg do begin close; open; end;
with ADOT_price do begin close; open; end;
end;
procedure TForm_seq_price.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
try
if ADOT_price.Active then ADOT_price.Close;
if ADOQ_order_msg.Active then ADOQ_order_msg.Close;
except
MsgErr(handle,'关闭工序及工价信息数据库失败!');
end;
action:=cafree;
end;
//[ADOT_seq_price]表添加记录
procedure TForm_seq_price.AddBtnClick(Sender: TObject);
begin
if not ADOT_price.Active then exit;
if ADOT_price.State in [dsinsert,dsedit] then exit;
PageControl1.ActivePageIndex:=1;
ADOT_price.Append;
end;
//[ADOT_seq_price]表数据修改
procedure TForm_seq_price.EdtBtnClick(Sender: TObject);
begin
if not ADOT_price.Active then exit;
if ADOT_price.State in [dsinsert,dsedit] then exit;
if ADOT_price.RecordCount<1 then exit;
PageControl1.ActivePageIndex:=1;
ADOT_price.edit;
DBEdit1.SetFocus;
end;
//[ADOT_seq_price]表删除数据
procedure TForm_seq_price.DelBtnClick(Sender: TObject);
var
temp_ordid, temp_seqname: string;
begin
if not ADOT_price.Active then exit;
if ADOT_price.RecordCount=0 then exit;
with ADOT_price do
begin
if State in [dsinsert,dsedit] then exit;
temp_ordid:=fieldvalues['ord_id'];
temp_seqname:=fieldvalues['seq_name'];
if MsgQst(handle,'确定删除订单批号 ['+temp_ordid+'] 下的 ['+temp_seqname+'] 工序吗?') =IDNO then exit;
try
delete;
except
MsgErr(handle,'当前数据在相关连的表中用到,不能删除!');
exit;
end;
end;
end;
//[ADOT_seq_price]表保存记录
procedure TForm_seq_price.SaveBtnClick(Sender: TObject);
var
temp_ordid, temp_seqname, temp_seqid, info,
temp_str1, temp_str2, temp_key: string;
begin
if not ADOT_price.Active then exit;
with ADOT_price do
begin
if not (State in [dsinsert,dsedit]) then exit;
temp_ordid:=trim(DBLookup_ordid.Text);
temp_seqname:=trim(DBE_seq_name.Text);
temp_seqid:=trim(DBE_seqid.Text);
if (temp_ordid='') then
begin
showmessage('订单批号不能为空!!!');
DBLookup_ordid.SetFocus;
exit;
end;
if temp_seqid='' then
begin
showmessage('工序编号不能为空,请重新选择订单批号以生成工序编号!');
DBLookup_ordid.SetFocus;
exit;
end;
if temp_seqname='' then
begin
showmessage('工序名称不能为空!');
DBE_seq_name.SetFocus;
exit;
end;
if State in [dsinsert] then
begin
fieldvalues['seq_id']:=temp_seqid;
if find_record('sequence_price','ord_id','seq_name',temp_ordid,temp_seqname,info) then
begin
MsgOK(handle,'该订单批号下已存在该工序名称,请重新输入!');
DBE_seq_name.SetFocus;
exit;
end;
//得到临时的PrimaryKey--temp_key
temp_str1:=temp_ordid;
temp_str2:=copy(temp_seqid,9,4);
temp_key:=temp_str1+temp_str2;
FieldValues['temp_key']:=temp_key;
end;//[dsinsert].End
if State in [dsedit] then
begin
if find_record('outbom_log','temp_key','tjflag',fieldvalues['temp_key'],'1',info) then
begin
if (edit_seqprice<>0) and (FieldValues['seq_price']<>edit_seqprice) then
begin
temp_str1:='该订单批号下的工序 ['+edit_seqname+'] 的工价在工序发料表中已经用到,';
temp_str1:=temp_str1+#13+#13+' 且已统计到个人收入表中,还要修改吗?';
if MsgQst(handle,temp_str1)=idno then
begin;
CancelBtnClick(CancelBtn);
exit;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -