⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deletestock.pas

📁 1. 直接安装并运行案例程序   运行“安装程序”文件夹中的setup.exe文件
💻 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 + -