📄 deletestock.pas
字号:
unit deleteStock;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBTables, DB, StdCtrls, ComCtrls, Grids, DBGrids;
type
TfrmDeleteStock = class(TForm)
DBGrid1: TDBGrid;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
units: TLabel;
Label4: TLabel;
wzName: TComboBox;
wzId: TEdit;
num: TEdit;
dt: TDateTimePicker;
GroupBox1: TGroupBox;
Button1: TButton;
money: TEdit;
Button2: TButton;
Button3: TButton;
Query1: TQuery;
DataSource1: TDataSource;
Label5: TLabel;
bmName: TComboBox;
Label6: TLabel;
bmId: TEdit;
Table1: TTable;
Table2: TTable;
Table3: TTable;
procedure FormCreate(Sender: TObject);
procedure wzNameSelect(Sender: TObject);
procedure bmNameSelect(Sender: TObject);
procedure numExit(Sender: TObject);
procedure moneyExit(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure refreshDbGrid;
public
{ Public declarations }
end;
var
frmDeleteStock: TfrmDeleteStock;
implementation
{$R *.dfm}
uses comFunc;
procedure TfrmDeleteStock.FormCreate(Sender: TObject);
begin
{初始化时间}
dt.Date:=now;
{初始化物资名称和物资编号以及单位}
with table1 do
begin
open;
while not eof do
begin
wzName.Items.Add(fieldByName('物资名称').AsString);
next;
end;
wzName.ItemIndex:=0;
first;
wzId.Text:=fieldByName('物资编号').AsString;
units.Caption:=fieldByName('单位').AsString;
close;
end;//end of with
{初始化部门名称和部门编号}
with table2 do
begin
open;
while not eof do
begin
bmName.Items.Add(fieldByName('部门名称').AsString);
next;
end;
bmName.ItemIndex:=0;
First;
bmId.Text:=fieldByName('部门编号').AsString;
close;
end;//end of with
{初始化其他}
num.Text:='';
money.Text:='';
end;
procedure TfrmDeleteStock.wzNameSelect(Sender: TObject);
begin
with table1 do
begin
open;
while not eof do
begin
if fieldByName('物资名称').AsString=wzName.Items[wzName.ItemIndex] then
begin
wzId.Text:=fieldByName('物资编号').AsString;
units.Caption:=fieldByName('单位').AsString;
break;
end;
next;
end;
close;
end;
end;
procedure TfrmDeleteStock.bmNameSelect(Sender: TObject);
begin
{根据用户选择不同的部门名称,相应的部门编号也跟着发生变化}
with table2 do
begin
open;
while not eof do
begin
if bmName.Items[bmName.ItemIndex]=
fieldByName('部门名称').AsString then
begin
bmId.Text:=fieldByName('部门编号').AsString;
break;
end;//end of if
next;
end;
close;
end;//end of with
end;
procedure TfrmDeleteStock.numExit(Sender: TObject);
begin
if (isInteger(num.Text)=false) and
(num.Text<>'') then
begin
showMessage('输入的数量有错误!');
activeControl:=num;
end;
end;
procedure TfrmDeleteStock.moneyExit(Sender: TObject);
begin
money.Text:='';
end;
procedure TfrmDeleteStock.Button2Click(Sender: TObject);
begin
{检查出库数量的合理性}
if num.Text='' then
begin
showMessage('请输入出库数量!');
activeControl:=num;
exit;
end;
{检查是否有足够的库存可以出库,如果有则修改库存}
with table1 do
begin
open;
while not eof do
begin
if fieldByName('物资编号').AsString=wzId.Text then
begin
if fieldByName('库存数量').AsInteger<strToInt(num.Text) then
{库存不足}
begin
showMessage('没有足够的库存!');
close;
exit;
end
else
{修改库存}
begin
edit;
fieldValues['库存数量']:=fieldByName('库存数量').AsInteger-strToInt(num.Text);
post;
end;
end;
next;
end;
close;
end;
{添加一天出库记录}
with table3 do
begin
open;
insert;
fieldValues['物资编号']:=wzId.Text;
fieldValues['部门编号']:=bmId.Text;
fieldValues['出库数量']:=num.Text;
fieldValues['出库时间']:=dt.Date;
post;
showMessage('出库操作成功!');
refreshDbGrid;
close;
end;
end;
procedure TfrmDeleteStock.refreshDbGrid;
begin
with query1 do
begin
close;
sql.Clear;
sql.Add('select a.物资编号,a.物资名称,b.部门编号,b.部门名称,c.出库数量,c.出库时间');
sql.Add('from wzinfo as a,bminfo as b,wzck as c');
sql.Add('where a.物资编号=c.物资编号 and b.部门编号=c.部门编号');
open;
end;
end;
procedure TfrmDeleteStock.Button1Click(Sender: TObject);
begin
{检查出库数量的合理性}
if num.Text='' then
begin
showMessage('出库数量输入错误!');
end;
{根据出库数量核算下拨这种物资的金额}
with table1 do
begin
open;
while not eof do
begin
if fieldByName('物资编号').AsString=wzId.Text then
begin
money.Text:='¥'+currtoStr(fieldByName('单价').AsCurrency*strToInt(num.Text));
close;
exit;
end;
next;
end;
close;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -