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

📄 stock_u.~pas

📁 汽车维修系统的设计
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit Stock_u;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DBCtrls, StdCtrls, Buttons, Grids, DBGridEh, Mask, DB,
  ADODB, ComCtrls, Menus;

type
  TStockfrm = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    BitBtn2: TBitBtn;
    BitBtn6: TBitBtn;
    OrderNoQuery: TADOQuery;
    DetailsQuery: TADOQuery;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    DateTimePicker1: TDateTimePicker;
    Edit1: TEdit;
    Edit2: TEdit;
    DBLookupComboBox2: TDBLookupComboBox;
    Label11: TLabel;
    StockManDs: TDataSource;
    StockManQuery: TADOQuery;
    Button1: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    BitBtn3: TBitBtn;
    DetailsQueryDSDesigner: TAutoIncField;
    DetailsQueryBillCode: TWideStringField;
    DetailsQuerygoodsCode: TWideStringField;
    DetailsQuerygoodsName: TWideStringField;
    DetailsQuerygoodsType: TWideStringField;
    DetailsQuerygoodsUnit: TWideStringField;
    DetailsQueryNum: TIntegerField;
    DetailsQueryPrice: TIntegerField;
    DetailsQueryTMoney: TBCDField;
    DetailsQueryDSDesigner2: TWideStringField;
    DetailsQueryDSDesigner3: TWideStringField;
    DetailsQueryOthers: TWideStringField;
    StringGrid1: TStringGrid;
    MainQuery: TADOQuery;
    PopupMenu1: TPopupMenu;
    NewMenu: TMenuItem;
    N2: TMenuItem;
    DelMenu: TMenuItem;
    BitBtn1: TBitBtn;
    DBLookupComboBox1: TDBLookupComboBox;
    DBLookupComboBox3: TDBLookupComboBox;
    ADOQuery1: TADOQuery;
    ADOQuery2: TADOQuery;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    ADOQuery3: TADOQuery;
    procedure BitBtn6Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DBLookupComboBox2Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure ClearEdit();
    procedure ClearStringGrid();
    Function MyOrderNo():integer;  //取得单号
    Procedure UpdateOrderNo();     //更新单号
    procedure NewMenuClick(Sender: TObject);
    procedure DelMenuClick(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure DBLookupComboBox3Exit(Sender: TObject);
    procedure DBLookupComboBox1Exit(Sender: TObject);
    procedure StringGrid1Exit(Sender: TObject);
    procedure StringGrid1RowMoved(Sender: TObject; FromIndex,
      ToIndex: Integer);
    procedure StringGrid1ColumnMoved(Sender: TObject; FromIndex,
      ToIndex: Integer);
    Procedure CalculateTotalMoney();   //金额=单价 x 数量
    Function SumTotalMoney():currency;        //合计金额
    Function UpdateDataToTable():Boolean;
    procedure BitBtn1Click(Sender: TObject);  //保存数据
    Function IsStorage():BOOLEAN;             //入库仓
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Stockfrm: TStockfrm;
  i :integer;
implementation

uses select_goods, MainFrm_u, stockMain_u;

{$R *.dfm}

procedure TStockfrm.BitBtn6Click(Sender: TObject);
begin
  close;
end;

procedure TStockfrm.FormCreate(Sender: TObject);
begin
   with StringGrid1  do
     begin
       colCount:=11;
       Cells[1,0]:='物品编号';
       Cells[2,0]:='物品名称';
       Cells[3,0]:='规格|型号';
       Cells[4,0]:='单位';
       Cells[5,0]:='数量';
       Cells[6,0]:='单价(RMB元)';
       Cells[7,0]:='金额(RMB元)';
       Cells[8,0]:='入库仓';
       Cells[9,0]:='仓位';
       Cells[10,0]:='简单摘要';
     end;

  ClearEdit();
  DateTimePicker1.DateTime :=date;
  StockManQuery.Active :=True;
  ADOQuery1.Active :=True;

end;

procedure TStockfrm.DBLookupComboBox2Click(Sender: TObject);
begin
  if DBLookupComboBox2.Text ='' then
     edit2.Text :=''
  else
     edit2.Text :=DBLookupComboBox2.Text;
end;

procedure TStockfrm.BitBtn2Click(Sender: TObject);  //保存数据
begin
    //数据合法性检查
   if (Edit2.Text ='')and(Edit4.Text ='')and(Edit1.Text ='')and(Edit5.Text ='') then
      begin
          application.MessageBox('单据录入不完整,请认真填写!','错误',mb_ok+mb_iconExclamation);
          exit;
      end;
   if (edit6.Text ='') or(edit6.Text ='0') then
      begin
          application.MessageBox('明细表数据为空!','提示',mb_ok+mb_iconExclamation);
          exit;
      end;

   if (edit7.Text ='') or(edit7.Text ='0') then
      begin
          application.MessageBox('本单金额为零!','提示',mb_ok+mb_iconExclamation);
          exit;
      end;

   if not IsStorage then
      begin
          application.MessageBox('明细表数据填写不完整,『物品编号』及『入库仓』等为必填项!','提示',mb_ok+mb_iconExclamation);
          exit;
      end;

    //选进行金额、合计金额统计
   CalculateTotalMoney();
   Edit7.Text:=FloatToStr(SumTotalMoney());

   if  UpdateDataToTable then
      begin
         application.MessageBox('数据已成功保存!','确认',mb_ok+mb_IconInformation);
         UpdateOrderNo();         //更新单号
         frmstockMain.ADOQuery1.Requery;
         BitBtn1.Enabled :=True;
         BitBtn2.Enabled :=False;
         BitBtn3.Enabled :=False;
      end
   else
         application.MessageBox('数据保存时发错误,保存失败!','错误',mb_ok+mb_IconError);
end;

procedure TStockfrm.ClearEdit();
begin
   Edit3.Text :=copy('A0000000',1,8-length(INTTOSTR(MyOrderNo)))+IntTOStr(MyOrderNo);
   Edit2.Clear ;
   Edit1.Clear ;
   Edit4.Clear ;
   Edit5.Clear ;
   Edit6.Text :='0';
   Edit7.Text :='0';
   Edit8.Text :=Mainfrm.str_uid;
   Edit9.Text :='';
end;

procedure TStockfrm.ClearStringGrid();
var
  C,R:integer;
begin
  for C:=1 to stringGrid1.ColCount do
      for R:=1 to StringGrid1.RowCount do
         stringGrid1.Cells[C,R]:='';
  stringGrid1.RowCount:=2;
  I:=1;
end;

Function TStockfrm.IsStorage():BOOLEAN;             //“物品编码”、“入库仓”字段是否有没填写
var
  I:integer;
begin
  for I:=1 to StringGrid1.RowCount -1 do
      if (StringGrid1.Cells[1,i]='')or(StringGrid1.Cells[8,i]='') then
         begin
            result:=False;
            break;
         end
      else
         result:=True;
end;

Function TStockfrm.MyOrderNo():integer;
begin
   with OrderNoQuery do
      begin
          close;
          sql.Clear ;
          sql.Add('select * from orderID where tableName=:a0 and theType=:a1');
          parameters[0].Value :='goodsi';
          parameters[1].Value :='IA';
          open ;
      end;
      if OrderNoQuery.RecordCount <=0 then
         result:=1
      else
        result:=OrderNoQuery.fieldbyname('IndexID').AsInteger ;
end;

Procedure TStockfrm.UpdateOrderNo();
begin
   with OrderNoQuery do
      begin
          close;
          sql.Clear ;
          sql.Add('Update orderID set IndexID=IndexID+1 where tableName=:a0 and theType=:a1');
          parameters[0].Value :='goodsi';
          parameters[1].Value :='IA';
          ExecSQL;
      end;
end;

procedure TStockfrm.NewMenuClick(Sender: TObject);
var
   n:integer;
begin
 //增加采购明细项
   with stringGrid1 do
      begin
        n:=RowCount; //行数
        if n=2 then
           begin
              if (Cells[1,n-1]='') then
                 begin
                     selectgoodsfrm:=Tselectgoodsfrm.Create(self);
                     selectgoodsfrm.Edit2.Text :=IntToStr(n);
                     selectgoodsfrm.ShowModal ;
                     selectgoodsfrm.Free ;
                 end
              else
                 begin
                    stringgrid1.RowCount:=stringgrid1.RowCount+1;
                    selectgoodsfrm:=Tselectgoodsfrm.Create(self);
                    selectgoodsfrm.Edit2.Text :=IntToStr(stringGrid1.RowCount);
                    selectgoodsfrm.ShowModal ;
                    selectgoodsfrm.Free ;

⌨️ 快捷键说明

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