📄 unitxiangpin.pas
字号:
unit UnitXiangPin;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, Mask, DBCtrls, Grids, DBGrids;
type
TFrmXiangPin = class(TForm)
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
DBComboBox1: TDBComboBox;
Label2: TLabel;
Label3: TLabel;
DBComboBox2: TDBComboBox;
Label4: TLabel;
DBEdit2: TDBEdit;
Label5: TLabel;
DBEdit3: TDBEdit;
GroupBox2: TGroupBox;
Label8: TLabel;
ComboBox1: TComboBox;
Label9: TLabel;
Button4: TButton;
Button5: TButton;
Button6: TButton;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
DBComboBox3: TDBComboBox;
DBGrid1: TDBGrid;
Label7: TLabel;
DBEdit1: TDBEdit;
ComboBox2: TComboBox;
Label10: TLabel;
DBComboBox4: TDBComboBox;
Label11: TLabel;
ComboBox3: TComboBox;
procedure DIS;
procedure ENA;
procedure FormShow(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure DBComboBox1DropDown(Sender: TObject);
procedure own(Sender: TObject);
procedure DBComboBox2DropDown(Sender: TObject);
procedure ComboBox1DropDown(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure ComboBox3Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure DBComboBox4Change(Sender: TObject);
procedure DBComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
sign: char;
{ Public declarations }
end;
var
FrmXiangPin: TFrmXiangPin;
implementation
uses UnitDM, UnitLogin;
{$R *.dfm}
procedure TFrmXiangPin.DIS;
begin
DBcombobox1.Enabled := false;
DBCombobox1.Color := clLtGray;
DBcombobox2.Enabled := false;
DBCombobox2.Color := clLtGray;
DBcombobox3.Enabled := false;
DBCombobox3.Color := clLtGray;
DBCombobox4.Enabled := false;
DBCombobox4.Color := clLtGray;
DBEdit1.Enabled := false;
DBEdit1.Color := clLtGray;
DBEdit2.Enabled := false;
DBEdit2.Color := clLtGray;
DBEdit3.Enabled := false;
DBEdit3.Color := clLtGray;
//DateTimePicker1.Enabled := false;
//DateTimePicker1.Color := clLtGray;
end;
procedure TFrmXiangPin.ENA;
begin
DBcombobox1.Enabled := true;
DBcombobox1.Color := clWindow;
DBcombobox2.Enabled := true;
DBcombobox2.Color := clWindow;
DBcombobox3.Enabled := true;
DBCombobox3.color := clWindow;
DBCombobox4.Enabled := true;
DBcombobox4.Color := clwindow;
DBEdit1.Enabled := true;
DBEdit1.Color := clwindow;
DBEdit2.Enabled := true;
DBEdit2.Color := clWindow;
DBEdit3.Enabled := true;
DBEdit3.Color := clWindow;
//DateTimePicker1.Enabled := true;
//DateTimePicker1.Color := clWindow;
end;
procedure TFrmXiangPin.FormShow(Sender: TObject);
begin
DIS;
DM.ADOQXPXX1.Open;
DM.ADOTXPXX.Open;
DM.ADOTXPJH.Open;
button1.Enabled := false;
button2.Enabled := false;
end;
procedure TFrmXiangPin.BitBtn2Click(Sender: TObject);
begin
DM.ADOQXPXX1.Close;
DM.ADOQTEMP1.Close;
DM.ADOTXPXX.Close;
DM.ADOTXPJH.Close;
DM.ADOQTEMP2.Close;
self.Close;
end;
procedure TFrmXiangPin.Button4Click(Sender: TObject);
begin
sign := '0';
button4.Enabled := false;
ENA;
button1.Enabled := true;
button2.Enabled := true;
DM.ADOTXPXX.Open;
DM.ADOTXPXX.Append;
DM.ADOTXPJH.Open;
DM.ADOTXPJH.Append;
//DM.ADOTXPJH.FieldByName('in_time').AsDateTime := DateTimePicker1.Date;
button5.Enabled := false;
button6.Enabled := false;
end;
procedure TFrmXiangPin.Button1Click(Sender: TObject);
//str1,str2: string;
//stock1, sale1, temp2, temp3, temp4: Integer;
begin
//str1 := 'select * from prod where prod_id = :id ';
//str2 := 'UPDATE prod SET prod_sort = :sort1, prod_name = :name1, prod_unit = :unit1, prod_price = :price1, prod_stock = :stock1, prod_sale = :sale1 WHERE prod_id = :id';
//保证各字段都完整填写好
if DBCombobox1.Text = '' then
begin
showmessage('商品类别没有填写!');
DBCombobox1.SetFocus;
exit;
end;
if DBCombobox4.Text = '' then
begin
showmessage('商品编号没有填写!');
exit;
end;
if DBCombobox2.Text = '' then
begin
showmessage('商品单位没有填写!');
DBCombobox2.SetFocus;
exit;
end;
if DBCombobox3.Text = '' then
begin
showmessage('商品名称没有填写!');
DBCombobox3.SetFocus;
exit;
end;
if DBEdit2.text = '' then
begin
showmessage('进货单价没有填写!');
DBEdit3.setFocus;
exit;
end;
if DBEdit1.Text = '' then
begin
showmessage('销售单价没有填写!');
DBEdit1.SetFocus;
exit;
end;
if DBEdit2.Text = '' then
begin
showmessage('进货数量没有填写!');
DBEdit2.SetFocus;
exit;
end;
{ if datetimetostr(DateTimePicker1.date) = '' then
begin
showmessage('进货日期没有填写!');
DateTimePicker1.SetFocus;
exit;
end; }
//修改进货标志
{if (sign = '1') then
begin
sign := '';
with DM.ADOQTEMP2 do
begin
close;
SQL.Clear;
SQL.Add('select prod_stock, prod_sale from prod where prod_id = :id');
parameters.ParamByName('id').Value := trim(DBCombobox4.Text);
if (not prepared) then
prepared := true;
active := true;
temp2 := fieldbyname('prod_stock').AsInteger;
temp3 := fieldbyname('prod_sale').AsInteger;
end;
temp4 := temp2 + (strtoint(DBEdit3.Text) - temp1);
if (temp4 < 0) then
begin
showmessage('已销售出大部分该样商品,不能够修改该样商品的进货信息了!');
exit;
end;
//DM.ADOTXPJH.Cancel;
//修改进货商品信息
with DM.ADOQTEMP1 do
begin
close;
SQL.Clear;
SQL.Add('update stock set operator_id = :opid, in_prod_id = :id, in_prod_name = :name, in_price = :price, in_number = :number where in_id = :ids');
parameters.ParamByName('opid').Value := 1;//auser.userid;
parameters.ParamByName('id').Value := trim(DBCombobox4.Text);
parameters.ParamByName('name').Value := trim(DBCombobox3.Text);
parameters.ParamByName('price').Value := strtofloat(DBEdit2.Text);
parameters.ParamByName('number').Value := strtoint(DBEdit3.Text);
//parameters.ParamByName('time').Value := Datetimepicker1.Date;
parameters.ParamByName('ids').Value := DM.ADOQXPXX1.fieldbyname('in_id').AsString;
if (not prepared) then
prepared := true;
try
execSQL;
except
showmessage('修改数据失败,请再试!');
button2click(self);
exit;
end;
end;
with DM.ADOQTEMP1 do
begin
close;
SQL.Clear;
SQL.Add(str2);
//str2 := 'UPDATE prod SET prod_sort = :sort1, prod_name = :name1, prod_unit = :unit1, prod_price = :price1, prod_stock = :stock1, prod_sale = :sale1 WHERE prod_id = :id';
parameters.ParamByName('sort1').Value := trim(DBCombobox1.Text);
parameters.ParamByName('name1').Value := trim(DBCombobox3.Text);
parameters.ParamByName('unit1').Value := trim(DBcombobox2.Text);
parameters.ParamByName('price1').Value := strtofloat(DBEdit1.Text);
parameters.ParamByName('stock1').Value := temp4;
parameters.ParamByName('sale1').Value := temp3;
parameters.ParamByName('id').Value := trim(DBCombobox4.Text);
if (not prepared) then
prepared := true;
try
ExecSQL;
except
//showmessage('发生错误,数据修改失败,请再试!');
close;
SQL.Clear;
SQL.Add('update stock set in_prod_id = :id, in_prod_name = :name, in_price = :price, in_number = :number, in_time = :time where in_id = :ids');
parameters.ParamByName('id').Value := DM.ADOQXPXX1.fieldbyname('prod_id').AsString;
parameters.ParamByName('name').Value := DM.ADOQXPXX1.fieldbyname('prod_name').AsString;
parameters.ParamByName('price').Value := DM.ADOQXPXX1.fieldbyname('in_price').AsFloat;
parameters.ParamByName('number').Value := temp1;
parameters.ParamByName('time').Value := DM.ADOQXPXX1.fieldbyname('in_time').AsDateTime;
parameters.ParamByName('ids').Value := DM.ADOQXPXX1.fieldbyname('in_id').Value;
if (not prepared)then
prepared := true;
try
execSQL;
except
showmessage('发生严重错误,请把刚修改的数据改回原样!');
button2click(self);
close;
exit;
end;
end;
end;
end
//当sign不等于on时,由修改状态转为向进货表插入一条进货记录
else
begin
with DM.ADOTXPJH do
begin
fieldbyname('in_prod_id').AsString := trim(DBCombobox4.Text);
fieldbyname('in_prod_name').AsString := trim(DBCombobox3.Text);
fieldbyname('in_price').AsFloat := strtofloat(DBEdit2.Text);
fieldbyname('in_number').AsInteger := strtoint(DBEDit3.Text);
//fieldbyname('in_time').AsDateTime := Datetimepicker1.Date;
post;
end; }
with DM.ADOSPUpdateStock do
begin
parameters.ParamByName('@in_id').Value := DM.ADOQXPXX1.fieldbyname('in_id').Value;
parameters.ParamByName('@operator_id').Value := 1;
parameters.ParamByName('@in_prod_id').Value := DBCombobox4.Text;
parameters.ParamByName('@in_prod_name').Value := DBCombobox3.Text;
parameters.ParamByName('@in_price').Value := strtofloat(DBEdit2.Text);
parameters.ParamByName('@in_number').Value := strtoint(DBEdit3.Text);
parameters.ParamByName('@sign').Value := sign;
parameters.ParamByName('@prod_price').Value := strtofloat(DBEdit1.Text);
parameters.ParamByName('@prod_sort').Value := DBCombobox1.text;
parameters.ParamByName('@prod_unit').Value := DBCombobox2.Text;
try
Execproc;
except
showmessage('发生错误,执行失败!');
exit;
end;
end;
{
//向商品表插入一条记录或者只修改记录
with DM.ADOQTEMP1 do
begin
if active then
active := false;
SQL.Clear;
SQL.Add(str1);
parameters.ParamByName('id').Value := trim(DBcombobox4.Text);
if (not prepared) then
prepared := true;
active := true;
//插入记录
if recordcount = 0 then
begin
DM.ADOTXPXX.FieldByName('prod_sort').AsString := trim(DBCombobox1.Text);
DM.ADOTXPXX.FieldByName('prod_id').AsString := trim(DBCombobox4.Text);
DM.ADOTXPXX.FieldByName('prod_unit').AsString := trim(DBCombobox2.Text);
DM.ADOTXPXX.FieldByName('prod_name').AsString := trim(DBcombobox3.Text);
DM.ADOTXPXX.FieldByName('prod_price').AsFloat := strtofloat(DBEdit1.text);
DM.ADOTXPXX.FieldByName('prod_stock').AsInteger := strtoint(DBEdit3.Text);
DM.ADOTXPXX.FieldByName('prod_sale').AsInteger := 0;
try
DM.ADOTXPXX.Post;
except
//showmessage('软件发生错误,操作失败!请重新进行上次操作!');
try
DM.ADOTXPJH.Last;
DM.ADOTXPJH.Delete;
except
showmessage('发生严重错误,请把刚添加的数据删除掉!');
button2click(self);
exit;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -