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

📄 warehouseinunit.pas

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

interface

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

type
  TfrmWarehouseIn = class(TForm)
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label5: TLabel;
    Label4: TLabel;
    Label3: TLabel;
    Label6: TLabel;
    edtInReceiveID: TDBEdit;
    edtVendorDept: TDBEdit;
    edtInvoiceNO: TDBEdit;
    edtWareName: TDBEdit;
    edtOperator: TDBEdit;
    dbGrdWarehouseInDetail: 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;
    Bevel2: TBevel;
    Label7: TLabel;
    Label8: TLabel;
    edt_MaterialName: TDBEdit;
    edtMaterialSpell: TDBEdit;
    Label9: TLabel;
    edtMaterialSpecs: TDBEdit;
    edtMaterialModel: TDBEdit;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    edtMaterialType: TDBEdit;
    Label13: TLabel;
    Label14: TLabel;
    edtRemark: TDBEdit;
    edtMaterialUnit: TDBEdit;
    edtMaterialNum: TDBEdit;
    Label15: TLabel;
    Label16: TLabel;
    edtMaterialPrice: TDBEdit;
    Label17: TLabel;
    Label18: TLabel;
    edtMaterialMoney: TDBEdit;
    edtWarehoseID: TDBEdit;
    edt_MaterialID: TDBEdit;
    edtWareDate: TDBEdit;
    procedure edt_MaterialIDKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edt_MaterialIDKeyPress(Sender: TObject; var Key: Char);
    procedure sbtnAddClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure sbtnSaveClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure edtVendorDeptKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edtWareNameKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edtInReceiveIDKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure sbtnDeleteClick(Sender: TObject);
    procedure sbtnExitClick(Sender: TObject);
    procedure sbtnFirstClick(Sender: TObject);
    procedure sbtnPriorClick(Sender: TObject);
    procedure sbtnNextClick(Sender: TObject);
    procedure sbtnLastClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure edtMaterialNumKeyPress(Sender: TObject; var Key: Char);
    procedure edtWareDateKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    MaterialID:string;  //物品编号
    MaterialName:string; // 物品名称
    MaterialSpell:string;//拼音简码
    MaterialModel:string;//型号
    MaterialSpecs:string;//规格
    MaterialType:string; //类型
    MaterialUnit:string; //单位
    MaterialPrice:string;//价格
    InNo:string;                    //类型编号
    ACode,AName:string;
    procedure SaveInWarehouse(var AWarehouseName,AMaterialID,AMaterialName,AMaterialType,AMaterialModel,AMaterialSpecs,
                                  AMaterialUnit,AMaterialNum,AMaterialPrice,AMaterialMoney:string);
  public
    { Public declarations }
  end;

var
  frmWarehouseIn: TfrmWarehouseIn;

implementation

uses MaterialInfoSearchUnit, DM_Unit, SpellInputUnit;

{$R *.dfm}

procedure TfrmWarehouseIn.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 TfrmWarehouseIn.edt_MaterialIDKeyPress(Sender: TObject;
  var Key: Char);
begin
  edtMaterialNum.setfocus;
end;

procedure TfrmWarehouseIn.sbtnAddClick(Sender: TObject);
begin
  DM.DataSetInsert(DM.sdsInWarehouse);
  DM.DataSetInsert(DM.sdsWarehouseDetail);
end;

procedure TfrmWarehouseIn.FormCreate(Sender: TObject);
begin
  DM.sdsWarehouseDetail.Open;
  DM.sdsInWarehouse.Open;
end;

procedure TfrmWarehouseIn.sbtnSaveClick(Sender: TObject);
var
  FWarehouseName,FMaterialID,FMaterialName,FMaterialType,FMaterialModel,
  FMaterialSpecs,FMaterialUnit,FMaterialNum,FMaterialPrice,FMaterialMoney:string;
begin
  if edtInReceiveID.Text='' then
  begin
    Application.MessageBox('系统错误:入库编号不能为空!','系统信息',mb_ok+MB_ICONWARNING );
    edtInReceiveID.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;
  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.sdsInWarehouse.State in [dsInsert, dsEdit] then
  begin
    //DM.sdsInWarehouse.fieldbyname('InReceiveDate').AsDateTime := dtpWareDate.Date;
    DM.sdsInWarehouse.ApplyUpdates(-1);
    DM.sdsWarehouseDetail.ApplyUpdates(-1);
    SaveInWarehouse(FWarehouseName,FMaterialID,FMaterialName,FMaterialType,FMaterialModel,FMaterialSpecs,FMaterialUnit,FMaterialNum,FMaterialPrice,FMaterialMoney);
  end;
end;

procedure TfrmWarehouseIn.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  DM.sdsInWarehouse.Close;
  DM.sdsWarehouseDetail.Close;
  Action:=caFree;
  frmWarehouseIn:=nil;
end;

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

procedure TfrmWarehouseIn.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;
    edtWareName.SetFocus;
  end;
end;

procedure TfrmWarehouseIn.edtInReceiveIDKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
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.sdsInWarehouse.State <> dsInsert then
        DM.DataSetInsert(DM.sdsInWarehouse);
      DM.OfferTypeID('select InReceiveID from WMS_InWarehouseInfo where InReceiveID like'+#39+'RK'+formatdatetime('yyyymmdd',now)+'%'+#39,InNo);
      edtInReceiveID.text:='RK'+formatdatetime('yyyymmdd',now)+'000'+InNo;
      edtVendorDept.setfocus;
    end
    else
    begin
      edtVendorDept.setfocus;
    end;
  end;
end;

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

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

procedure TfrmWarehouseIn.sbtnFirstClick(Sender: TObject);
begin
  DM.DataSetFirst(DM.sdsInWarehouse);
end;

procedure TfrmWarehouseIn.sbtnPriorClick(Sender: TObject);
begin
  DM.DataSetPrior(DM.sdsInWarehouse);
end;

procedure TfrmWarehouseIn.sbtnNextClick(Sender: TObject);
begin
  DM.DataSetNext(DM.sdsInWarehouse);
end;

procedure TfrmWarehouseIn.sbtnLastClick(Sender: TObject);
begin
  DM.DataSetLast(DM.sdsInWarehouse);
end;

procedure TfrmWarehouseIn.btnCancelClick(Sender: TObject);
begin
  DM.DataSetCancel(DM.sdsInWarehouse);
  DM.DataSetCancel(DM.sdsWarehouseDetail);
end;



procedure TfrmWarehouseIn.SaveInWarehouse(var AWarehouseName, AMaterialID,
  AMaterialName, AMaterialType, AMaterialModel, AMaterialSpecs,
  AMaterialUnit, AMaterialNum, AMaterialPrice, AMaterialMoney: string);
var
  str_sql,InNo,AWarehouseNO: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+
                 ' and MaterialType='+#39+AMaterialType+#39;
      DM.sdsWarehouse.Close;
      DM.sdsWarehouse.DataSet.CommandText :=  str_sql;
      DM.sdsWarehouse.Execute;
    end
    else//库存表中不存在则新增
    begin
      DM.OfferTypeID('select WarehouseNO from wms_warehouse where WarehouseNO like'+#39+'KC'+formatdatetime('yyyymmdd',now)+'%'+#39,InNo);
        AWarehouseNO := 'RK'+formatdatetime('yyyymmdd',now)+'000'+InNo;
      str_sql := 'insert into wms_warehouse (WarehouseNO,WarehouseName,MaterialID,MaterialName,MaterialType,MaterialModel,MaterialSpecs,MaterialUnit,MaterialNum,MaterialPrice,MaterialMoney) values('+
      #39+AWarehouseNO+#39+','+#39+AWarehouseName+#39+','+#39+AMaterialID+#39+','+#39+AMaterialName+#39+','+#39+AMaterialType+#39+','+#39+AMaterialModel+#39+','+#39+AMaterialSpecs+#39+','+#39+AMaterialUnit+#39+','+
      AMaterialNum+','+AMaterialPrice+','+AMaterialMoney+')';
      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 TfrmWarehouseIn.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;

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

end.

⌨️ 快捷键说明

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