📄 f_jscp.pas
字号:
unit f_jscp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, DB, ADODB;
type
Tw_jscp = class(TForm)
gb_1: TGroupBox;
Label1: TLabel;
SpeedButton1: TSpeedButton;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
Label7: TLabel;
Edit7: TEdit;
Label8: TLabel;
Edit8: TEdit;
Label9: TLabel;
Edit9: TEdit;
Label10: TLabel;
Edit10: TEdit;
GroupBox2: TGroupBox;
ado_product: TADOQuery;
ado_productproduct_id: TStringField;
ado_productproduct_name: TStringField;
ado_productproduct_amount: TIntegerField;
ado_productproduct_price: TFloatField;
ado_product_profit_cost: TADOQuery;
data_product_profit_cost: TDataSource;
ado_product_profit_costproduct_id: TStringField;
ado_product_profit_costproduct_amount: TIntegerField;
ado_product_profit_costproduct_income: TFloatField;
ado_product_profit_costmaterial_cost: TFloatField;
ado_product_profit_costlabor_cost: TFloatField;
ado_product_profit_costoverhead: TFloatField;
ado_product_profit_costtotal_cost: TFloatField;
ado_product_profit_costunit_cost: TFloatField;
ado_product_profit_costproduct_profit: TFloatField;
ado_product_profit_costunit_profit: TFloatField;
ado_material_master: TADOQuery;
ado_material_masterproduct_id: TStringField;
ado_material_mastermaterial_id: TStringField;
ado_material_mastermaterial_unit: TFloatField;
ado_material_masterunit_amount: TFloatField;
ado_material_masterunit_cost: TFloatField;
ado_labormaster: TADOQuery;
ado_labormasterproduct_id: TStringField;
ado_labormasterlabor_id: TStringField;
ado_labormasterlabor_unit: TStringField;
ado_labormasterunit_amount: TFloatField;
ado_labormasterunit_cost: TFloatField;
ado_overhead_distribute: TADOQuery;
ado_overhead_distributeactive_id: TStringField;
ado_overhead_distributecost_active_id: TStringField;
ado_overhead_distributerate: TFloatField;
ado_overhead_distributeproduct_id: TStringField;
ado_overhead_distributeproduct_distribute_cost: TFloatField;
DBGrid1: TDBGrid;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
procedure SpeedButton1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
w_jscp: Tw_jscp;
implementation
uses f_product_id;
{$R *.dfm}
procedure Tw_jscp.SpeedButton1Click(Sender: TObject);
begin
Application.CreateForm(Tw_product_id, w_product_id);
if w_product_id.ShowModal = mrOk then
Edit1.Text:=copy(trim(w_product_id.combobox1.text),1,5);
end;
procedure Tw_jscp.BitBtn1Click(Sender: TObject);
var
sum,sum1,sum2:real;
s:string;
begin
sum:=0;
sum1:=0;
sum2:=0;
if edit1.Text <>'' then
begin
ado_product.Close;
ado_product.SQL.Clear;
ado_product.SQL.Add('select * from product where product_id='''+edit1.text+'''') ;
ado_product.Open;
edit2.Text:=ado_product.fieldbyname('product_amount').AsString; //计算数量
edit3.Text:=floattostr(ado_product.fieldbyname('product_price').Value* ado_product.fieldbyname('product_amount').Value); //计算产品收入
ado_material_master.Close;
ado_material_master.SQL.Clear;
ado_material_master.SQL.Add('select * from material_master where product_id='''+edit1.text+'''');
ado_material_master.Open;
ado_material_master.First;
while not ado_material_master.Eof do
begin
sum:=sum+ado_material_master.FieldByName('unit_cost').Value;
ado_material_master.Next;
end;
edit4.Text:=floattostr(sum*(strtofloat(edit2.Text))); //计算直接材料
ado_labormaster.Close;
ado_labormaster.SQL.Clear;
ado_labormaster.SQL.Add('select * from labor_master where product_id='''+edit1.text+'''');
ado_labormaster.Open;
ado_labormaster.First;
while not ado_labormaster.Eof do
begin
sum1:=sum+ado_labormaster.fieldbyname('unit_cost').Value;
ado_labormaster.Next;
end;
edit5.Text:=floattostr(sum1*(strtofloat(edit2.Text))); //计算人工;
ado_overhead_distribute.Close;
ado_overhead_distribute.SQL.Clear;
ado_overhead_distribute.SQL.Add('select * from overhead_distribute where product_id='''+edit1.text+'''');
ado_overhead_distribute.Open;
ado_overhead_distribute.First;
while not ado_overhead_distribute.Eof do
begin
sum2:=sum2+ ado_overhead_distribute.fieldbyname('product_distribute_cost').Value;
ado_overhead_distribute.Next;
end;
str(sum2:8:2,s);
edit6.Text:=s; //计算制造费用
edit7.Text:=floattostr(strtofloat(edit4.Text)+strtofloat(edit5.Text)+strtofloat(edit6.Text));//计算总成本
edit8.Text:= floattostr((strtofloat(edit7.Text))/(strtofloat(edit2.text))); //单位成本
edit9.Text:=floattostr(strtofloat(edit3.Text)-strtofloat(edit7.text));//计算产品利润
edit10.Text:=floattostr(strtofloat(edit9.Text )/strtofloat(edit2.text));//计算单位利润
ado_product_profit_cost.Close;
ado_product_profit_cost.SQL.Clear;
ado_product_profit_cost.SQL.Add('select * from product_profit_cost where product_id ='+char(39)+trim(edit1.Text)+char(39));
ado_product_profit_cost.Open;
if ado_product_profit_cost.IsEmpty then begin
ado_product_profit_cost.Append;
ado_product_profit_cost.FieldByName('product_id').AsString:=trim(edit1.Text);
ado_product_profit_cost.FieldByName('product_amount').AsString:=trim(edit2.text);
ado_product_profit_cost.FieldByName('product_income').AsString:=trim(edit3.Text);
ado_product_profit_cost.FieldByName('material_cost').AsString:=trim(edit4.Text);
ado_product_profit_cost.FieldByName('labor_cost').AsString:=trim(edit5.text);
ado_product_profit_cost.FieldByName('overhead').AsString:=trim(edit6.text);
ado_product_profit_cost.FieldByName('total_cost').AsString:=trim(edit7.Text);
ado_product_profit_cost.FieldByName('unit_cost').AsString:=trim(edit8.Text);
ado_product_profit_cost.FieldByName('product_profit').AsString:=trim(edit9.Text);
ado_product_profit_cost.FieldByName('unit_profit').AsString:=trim(edit10.Text) ;
ado_product_profit_cost.Post ;
ado_product_profit_cost.Close;
ado_product_profit_cost.SQL.Clear;
ado_product_profit_cost.SQL.Add('select * from product_profit_cost ');
ado_product_profit_cost.Open;
end
else
begin
ado_product_profit_cost.Close;
ado_product_profit_cost.SQL.Clear;
ado_product_profit_cost.SQL.Add('select * from product_profit_cost ');
ado_product_profit_cost.Open;
application.MessageBox('该记录已经存在,不能插入,谢谢合作!!','提示',mb_ok+mb_iconinformation);
end;
end
else
begin
application.MessageBox('请输入产品号','提示',mb_ok+mb_iconinformation);
end;
end;
procedure Tw_jscp.DBGrid1CellClick(Column: TColumn);
begin
if ado_product_profit_cost.RecordCount-1>0 then
begin
edit1.Text:=trim(ado_product_profit_cost.FieldByName('product_id').AsString);
edit2.Text :=trim(ado_product_profit_cost.FieldByName('product_amount').AsString);
edit3.Text:=trim(ado_product_profit_cost.FieldByName('product_income').AsString);
edit4.Text:=trim(ado_product_profit_cost.FieldByName('material_cost').AsString);
edit5.Text :=trim(ado_product_profit_cost.FieldByName('labor_cost').AsString);
edit6.Text :=trim(ado_product_profit_cost.FieldByName('overhead').AsString);
edit7.Text:=trim(ado_product_profit_cost.FieldByName('total_cost').AsString);
edit8.Text:=trim(ado_product_profit_cost.FieldByName('unit_cost').AsString);
edit9.Text:=trim(ado_product_profit_cost.FieldByName('product_profit').AsString);
edit10.Text:=trim(ado_product_profit_cost.FieldByName('unit_profit').AsString);
end;
end;
procedure Tw_jscp.BitBtn2Click(Sender: TObject);
var
ss:string;
begin
ss:='';
if edit1.Text='' then
begin
application.MessageBox('您没有输入查询条件!请重新输入!','提示',mb_ok+mb_iconinformation);
end
else
begin
if edit1.Text<>'' then
ss:=ss+'and product_id='+''''+edit1.Text+'''';
ss:='select * from product_profit_cost where 1=1'+ss;
ado_product_profit_cost.Close;
ado_product_profit_cost.SQL.Clear;
ado_product_profit_cost.SQL.Add(ss);
ado_product_profit_cost.SQL.Add('exec pro_product');
ado_product_profit_cost.Open;
if ado_product_profit_cost.RecordCount=0 then
begin
application.MessageBox('没有符合要求的记录,请和管理员联系,请重新输入!','提示',mb_ok+mb_iconinformation);
end
else begin
edit1.Text:=trim(ado_product_profit_cost.FieldByName('product_id').AsString);
edit2.Text :=trim(ado_product_profit_cost.FieldByName('product_amount').AsString);
edit3.Text:=trim(ado_product_profit_cost.FieldByName('product_income').AsString);
edit4.Text:=trim(ado_product_profit_cost.FieldByName('material_cost').AsString);
edit5.Text :=trim(ado_product_profit_cost.FieldByName('labor_cost').AsString);
edit6.Text :=trim(ado_product_profit_cost.FieldByName('overhead').AsString);
edit7.Text:=trim(ado_product_profit_cost.FieldByName('total_cost').AsString);
edit8.Text:=trim(ado_product_profit_cost.FieldByName('unit_cost').AsString);
edit9.Text:=trim(ado_product_profit_cost.FieldByName('product_profit').AsString);
edit10.Text:=trim(ado_product_profit_cost.FieldByName('unit_profit').AsString);
end;
end;
end;
procedure Tw_jscp.BitBtn3Click(Sender: TObject);
begin
edit1.Clear; edit2.Clear;edit3.Clear; edit4.Clear;edit5.Clear;
edit6.Clear; edit7.Clear; edit8.Clear; edit9.Clear;edit10.Clear;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -