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

📄 warehouseoutunit.pas

📁 仓库管理系统 貌似是ACCESS的数据库
💻 PAS
字号:
unit WarehouseOutUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBClient, SimpleDS, Buttons, ToolWin, ComCtrls, ExtCtrls,
  Grids, DBGrids, StdCtrls, Mask, DBCtrls;

type
  TfrmWarehouseOut = class(TForm)
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label5: TLabel;
    Label4: TLabel;
    Label3: TLabel;
    Label6: TLabel;
    Bevel2: TBevel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    edtInReceiveID: TDBEdit;
    edtVendorDept: TDBEdit;
    edtInvoiceNO: TDBEdit;
    edtWareName: TDBEdit;
    edtOperator: TDBEdit;
    edt_MaterialName: TDBEdit;
    edtMaterialSpell: TDBEdit;
    edtMaterialSpecs: TDBEdit;
    edtMaterialModel: TDBEdit;
    edtMaterialType: TDBEdit;
    edtRemark: TDBEdit;
    edtMaterialUnit: TDBEdit;
    edtMaterialNum: TDBEdit;
    edtMaterialPrice: TDBEdit;
    edtMaterialMoney: TDBEdit;
    edtWarehoseID: TDBEdit;
    edt_MaterialID: TDBEdit;
    dbGrdWarehouseOutDetail: TDBGrid;
    ControlBar1: TControlBar;
    CoolBar2: TCoolBar;
    sbtnFirst: TSpeedButton;
    sbtnPrior: TSpeedButton;
    sbtnNext: TSpeedButton;
    sbtnLast: TSpeedButton;
    CoolBar3: TCoolBar;
    sbtnAdd: TSpeedButton;
    sbtnSave: TSpeedButton;
    Bevel1: TBevel;
    sbtnExit: TSpeedButton;
    sbtnDelete: TSpeedButton;
    btnCancel: TSpeedButton;
    edtWareDate: TDBEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure edtInReceiveIDKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure sbtnFirstClick(Sender: TObject);
    procedure sbtnPriorClick(Sender: TObject);
    procedure sbtnNextClick(Sender: TObject);
    procedure sbtnLastClick(Sender: TObject);
    procedure sbtnAddClick(Sender: TObject);
    procedure sbtnSaveClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure sbtnExitClick(Sender: TObject);
    procedure edtVendorDeptKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edtWareNameKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edt_MaterialIDKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edtWareDateKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure sbtnDeleteClick(Sender: TObject);
    procedure edt_MaterialIDKeyPress(Sender: TObject; var Key: Char);
    procedure edtMaterialNumKeyPress(Sender: TObject; var Key: Char);
  private
    MaterialID:string;  //物品编号
    MaterialName:string; // 物品名称
    MaterialSpell:string;//拼音简码
    MaterialModel:string;//型号
    MaterialSpecs:string;//规格
    MaterialType:string; //类型
    MaterialUnit:string; //单位
    MaterialPrice:string;//价格
    ACode,AName:string;
    procedure SaveOutWarehouse(var AWarehouseName,AMaterialID,AMaterialName,AMaterialType,AMaterialModel,AMaterialSpecs,
                                  AMaterialUnit,AMaterialNum,AMaterialPrice,AMaterialMoney:string);
  public
    { Public declarations }
  end;

var
  frmWarehouseOut: TfrmWarehouseOut;

implementation

uses DM_Unit, SpellInputUnit, MaterialInfoSearchUnit;

{$R *.dfm}

procedure TfrmWarehouseOut.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  DM.sdsOutWarehouse.Close;
  DM.sdsOutWarehouseDetail.Close;
  Action:=caFree;
  frmWarehouseOut:=nil;
end;

procedure TfrmWarehouseOut.FormCreate(Sender: TObject);
begin
  DM.sdsOutWarehouse.Open;
  DM.sdsOutWarehouseDetail.Open;
end;

procedure TfrmWarehouseOut.edtInReceiveIDKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
var
  InNo: string;  
begin
  if DM.sdsInWarehouse.State <> dsInsert then
  begin
    Application.MessageBox('系统错误:请首先点新增功能按钮!','系统信息',mb_ok+MB_ICONWARNING );
    edtInReceiveID.SetFocus; Exit;
  end;
  if key=VK_RETURN then
  begin
    if trim(edtInReceiveID.text)='' then
    begin
      if DM.sdsOutWarehouse.State <> dsInsert then
        DM.DataSetInsert(DM.sdsInWarehouse);
      DM.OfferTypeID('select InReceiveID from WMS_OutWarehouseInfo where InReceiveID like'+#39+'CK'+formatdatetime('yyyymmdd',now)+'%'+#39,InNo);
      edtInReceiveID.text:='CK'+formatdatetime('yyyymmdd',now)+'000'+InNo;
      edtVendorDept.setfocus;
    end
    else
    begin
      edtVendorDept.setfocus;
    end;
  end;
end;

procedure TfrmWarehouseOut.sbtnFirstClick(Sender: TObject);
begin
  DM.DataSetFirst(DM.sdsOutWarehouse);
end;

procedure TfrmWarehouseOut.sbtnPriorClick(Sender: TObject);
begin
  DM.DataSetPrior(DM.sdsOutWarehouse);
end;

procedure TfrmWarehouseOut.sbtnNextClick(Sender: TObject);
begin
  DM.DataSetNext(DM.sdsOutWarehouse);
end;

procedure TfrmWarehouseOut.sbtnLastClick(Sender: TObject);
begin
  DM.DataSetLast(DM.sdsOutWarehouse);
end;

procedure TfrmWarehouseOut.sbtnAddClick(Sender: TObject);
begin
  DM.DataSetInsert(DM.sdsOutWarehouse);
  DM.DataSetInsert(DM.sdsOutWarehouseDetail);
end;

procedure TfrmWarehouseOut.sbtnSaveClick(Sender: TObject);
var
  FWarehouseName,FMaterialID,FMaterialName,FMaterialType,FMaterialModel,FMaterialSpecs,
  FMaterialUnit,FMaterialNum,FMaterialPrice,FMaterialMoney:string;
  str_sql:string;
begin
  if edtInReceiveID.Text='' then
  begin
    Application.MessageBox('系统错误:出库编号不能为空!','系统信息',mb_ok+MB_ICONWARNING );
    edtInReceiveID.SetFocus; Exit;
  end;
  if edtWareName.Text='' then
  begin
    Application.MessageBox('系统错误:仓库不能为空!','系统信息',mb_ok+MB_ICONWARNING );
    edtWareName.SetFocus; Exit;
  end;
  if edt_MaterialID.Text='' then
  begin
    Application.MessageBox('系统错误:物品编号不能为空!','系统信息',mb_ok+MB_ICONWARNING );
    edt_MaterialID.SetFocus; Exit;
  end;
  if edtWareDate.Text='' then
  begin
    Application.MessageBox('系统错误:出库时间不能为空!','系统信息',mb_ok+MB_ICONWARNING );
    edtWareDate.SetFocus; Exit;
  end;
  try
    str_sql := 'select WarehouseNO from wms_warehouse where WarehouseName='+#39+
    edtWareName.Text+#39+' and MaterialName='+#39+edt_MaterialName.Text+#39;
    DM.sdspub.Close;
    DM.sdspub.DataSet.CommandText := str_sql;
    DM.sdspub.Open;
    if DM.sdspub.RecordCount<=0 then
    begin
      Application.MessageBox('系统错误:库存中没有此物品,请联系仓库管理员!','系统信息',mb_ok+MB_ICONWARNING );
      edtMaterialNum.SetFocus; Exit;
    end;
  except
    on e : exception do
    begin
      Application.MessageBox(pchar('错误:数据写入数据库失败.错误代码:' + e.Message),
                           '连接错误',MB_OK+MB_ICONWARNING);
      abort;
    end;
  end;
  FWarehouseName := edtWareName.Text;
  FMaterialID := edt_MaterialID.Text;
  FMaterialName := edt_MaterialName.Text;
  FMaterialType := edtMaterialType.Text;
  FMaterialModel := edtMaterialModel.Text;
  FMaterialSpecs := edtMaterialSpecs.Text;
  FMaterialUnit := edtMaterialUnit.Text;
  FMaterialNum := edtMaterialNum.Text;
  FMaterialPrice := edtMaterialPrice.Text;
  FMaterialMoney := edtMaterialMoney.Text;
  if DM.sdsOutWarehouse.State in [dsInsert, dsEdit] then
  begin
    //DM.sdsInWarehouse.fieldbyname('InReceiveDate').AsDateTime := dtpWareDate.Date;
    DM.sdsOutWarehouse.ApplyUpdates(-1);
    DM.sdsOutWarehouseDetail.ApplyUpdates(-1);
    SaveOutWarehouse(FWarehouseName,FMaterialID,FMaterialName,FMaterialType,FMaterialModel,FMaterialSpecs,FMaterialUnit,FMaterialNum,FMaterialPrice,FMaterialMoney);
  end;
end;

procedure TfrmWarehouseOut.SaveOutWarehouse(var AWarehouseName,
  AMaterialID, AMaterialName, AMaterialType, AMaterialModel,
  AMaterialSpecs, AMaterialUnit, AMaterialNum, AMaterialPrice,
  AMaterialMoney: string);
var
  str_sql:string;
  Money:Integer;
begin
try
    str_sql := 'select WarehouseNO from wms_warehouse where WarehouseName='+#39+
    AWarehouseName+#39+' and MaterialName='+#39+AMaterialName+#39;
    DM.sdspub.Close;
    DM.sdspub.DataSet.CommandText := str_sql;
    DM.sdspub.Open;
    if DM.sdspub.RecordCount>0 then
    begin
      Money :=StrToInt(AMaterialNum) * StrToInt(AMaterialPrice);
      str_sql := 'update wms_warehouse set MaterialUnit='+#39+AMaterialUnit+#39+',MaterialPrice='+AMaterialPrice+
                 ',MaterialMoney= MaterialMoney - '+IntToStr(Money)+ ',MaterialNum=MaterialNum - ' +AMaterialNum+
                 ' where MaterialName='+#39+AMaterialName+#39+' and WarehouseName='+#39+AWarehouseName+#39;
      DM.sdsWarehouse.Close;
      DM.sdsWarehouse.DataSet.CommandText :=  str_sql;
      DM.sdsWarehouse.Execute;
    end;
   except
    on e : exception do
    begin
      Application.MessageBox(pchar('错误:数据写入数据库失败.错误代码:' + e.Message),
                           '连接错误',MB_OK+MB_ICONWARNING);
      abort;
    end
    else
      Application.MessageBox('出库保存失败','连接错误',MB_OK+MB_ICONWARNING);
  end;
end;

procedure TfrmWarehouseOut.btnCancelClick(Sender: TObject);
begin
  DM.DataSetCancel(DM.sdsOutWarehouse);
  DM.DataSetCancel(DM.sdsOutWarehouseDetail);
end;

procedure TfrmWarehouseOut.sbtnExitClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmWarehouseOut.edtVendorDeptKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if key=VK_SPACE then
  begin
    frmSpellInput.showFormData('WMS_Customer','CustomerName','CustomerSpell',ACode,AName);   //
    edtVendorDept.Text:=AName;
    edtWareName.SetFocus;
  end;
end;

procedure TfrmWarehouseOut.edtWareNameKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if key=VK_SPACE then
  begin
    frmSpellInput.showFormData('WMS_WareInfo','WarehouseName','WarehouseID',ACode,AName);   //
    edtWareName.Text:=AName;
    edtWareDate.SetFocus;
  end;
end;

procedure TfrmWarehouseOut.edt_MaterialIDKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if key=VK_SPACE then
  begin
    frmMaterialSearch.GetMaterialInfo(
                              MaterialName,
                              MaterialID,
                              MaterialSpell,
                              MaterialModel,
                              MaterialSpecs,
                              MaterialType,
                              MaterialUnit,
                              MaterialPrice);

    edt_MaterialName.text:=MaterialName;
    edt_MaterialID.text:=MaterialID;
    edtMaterialSpell.text:=MaterialSpell;
    edtMaterialModel.text:=MaterialModel;
    edtMaterialSpecs.text:=MaterialSpecs;
    edtMaterialType.text:=MaterialType;
    edtMaterialUnit.text:=MaterialUnit;
    edtMaterialPrice.text:=MaterialPrice;
   end;
  {  }
end;

procedure TfrmWarehouseOut.edtWareDateKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  edtWareDate.Text := formatdatetime('yyyy-mm-dd',now);
  edtInvoiceNO.SetFocus;
end;

procedure TfrmWarehouseOut.sbtnDeleteClick(Sender: TObject);
begin
  DM.DataSetDelete(DM.sdsOutWarehouse);
  if DM.sdsOutWarehouse.State in [dsInsert, dsEdit] then
  begin
    if DM.sdsOutWarehouse.RecordCount > 0 then
      if MessageDlg('确定删除当前记录吗?', mtWarning, [mbOk, mbCancel], 0) = mrOK then
      begin
        DM.sdsOutWarehouse.Delete;
        DM.sdsOutWarehouse.ApplyUpdates(-1);
        DM.sdsOutWarehouseDetail.Delete;
        DM.sdsOutWarehouseDetail.ApplyUpdates(-1);
      end;
  end;
end;

procedure TfrmWarehouseOut.edt_MaterialIDKeyPress(Sender: TObject;
  var Key: Char);
begin
   edtMaterialNum.setfocus;
end;

procedure TfrmWarehouseOut.edtMaterialNumKeyPress(Sender: TObject;
  var Key: Char);
var
  Money: Integer;
begin
  if edtMaterialNum.Text='' then Exit;
    Money :=StrToInt(edtMaterialNum.Text) * StrToInt(edtMaterialPrice.Text);
  edtMaterialMoney.Text := IntToStr(Money);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -