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

📄 unit_stock_in.~pas

📁 学习程序,用于初学进销存的参考代码学习程序,用于初学进销存的参考代码
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit unit_stock_in;

interface

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

type
  TfrmStock_In = class(TForm)
    CoolBar3: TCoolBar;
    SpeedButton43: TSpeedButton;
    SB_Save: TSpeedButton;
    SpeedButton45: TSpeedButton;
    SB_Add: TSpeedButton;
    SB_Delete: TSpeedButton;
    SpeedButton48: TSpeedButton;
    SpeedButton49: TSpeedButton;
    TVStockIn: TTreeView;
    PC_Stock: TPageControl;
    TB_Contract_List: TTabSheet;
    DBStockIn: TDBGrid;
    TB_Contract_Detail: TTabSheet;
    GroupBox2: TGroupBox;
    Label19: TLabel;
    Label20: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label27: TLabel;
    Label34: TLabel;
    StatusBar4: TStatusBar;
    ImageList1: TImageList;
    DSStockIn: TDataSource;
    Label1: TLabel;
    Label2: TLabel;
    DS_StockDetail: TDataSource;
    GroupBox1: TGroupBox;
    DB_Stock_Detail: TDBGrid;
    Label3: TLabel;
    Cb_PType: TComboBox;
    Label4: TLabel;
    Label5: TLabel;
    Cb_PName: TComboBox;
    Label6: TLabel;
    Label7: TLabel;
    Cb_Unit: TComboBox;
    BtAdd: TBitBtn;
    BtDelete: TBitBtn;
    Cb_InType: TComboBox;
    Ed_Qty: TEdit;
    Ed_Price: TEdit;
    Cb_CName: TComboBox;
    Cb_UserName: TComboBox;
    Cb_State: TComboBox;
    Ed_PayMoeny: TEdit;
    Ed_StockNo: TEdit;
    Ed_TotalMoney: TEdit;
    Memo: TMemo;
    Ed_Rebate: TEdit;
    Label8: TLabel;
    DT_StockDate: TDateTimePicker;
    ADOStockIn: TADOQuery;
    ADO_StockDetail: TADOQuery;
    procedure FormShow(Sender: TObject);
    procedure TVStockInClick(Sender: TObject);
    procedure Cb_PTypeChange(Sender: TObject);
    procedure Cb_PNameChange(Sender: TObject);
    procedure DSStockInDataChange(Sender: TObject; Field: TField);
    procedure SpeedButton49Click(Sender: TObject);
    procedure SB_AddClick(Sender: TObject);
    procedure SB_SaveClick(Sender: TObject);
    procedure BtAddClick(Sender: TObject);
    procedure PC_StockChanging(Sender: TObject; var AllowChange: Boolean);
    procedure Ed_PayMoenyChange(Sender: TObject);
    procedure Ed_PriceChange(Sender: TObject);
    procedure Ed_QtyChange(Sender: TObject);
    procedure Ed_RebateChange(Sender: TObject);
    procedure BtDeleteClick(Sender: TObject);
    procedure SB_DeleteClick(Sender: TObject);
    procedure Cb_InTypeExit(Sender: TObject);
    procedure Cb_CNameExit(Sender: TObject);
    procedure Cb_InTypeEnter(Sender: TObject);
    procedure Cb_InTypeChange(Sender: TObject);
    procedure SpeedButton43Click(Sender: TObject);
  private
    procedure InitComboBoxValue();
    function  GetTotal_Money():string; //
    procedure ClearEditValue();
    procedure JudgeDataSet_ChangeValue();
   
  public
     bEdit,bInsert,bSave:boolean;
     sOldValue,sNewValue:string;
     function CheckEditValue():boolean;
     
  end;

var
  frmStock_In: TfrmStock_In;

implementation

uses unit_main_dm, main;

{$R *.dfm}

procedure TfrmStock_In.FormShow(Sender: TObject);
var _sql,_sqldetail:string;
    newcol:TColumn;
begin
    InitComboBoxValue();  //初始化窗口中的CBX里的初始值
    _sql:='exec sp_cjh_query_stock_hdr';
    Main_DM.IniTreeView_OpenADOQuery(TVStockIn,ADOStockIn,'进货信息','Stock_No',_sql);

    /////开始取出Stock_Detail表里的数据



    //设置Stock_hdr里的字段和GRID里显示顺序
    DBStockIn.Columns.Items[0].FieldName:='stock_no';
    DBStockIn.Columns.Items[1].FieldName:='Rec_Date';
    DBStockIn.Columns.Items[2].FieldName:='Cust_ID';
    DBStockIn.Columns.Items[3].FieldName:='In_Type';
    DBStockIn.Columns.Items[4].FieldName:='Total_Moeny';
    DBStockIn.Columns.Items[5].FieldName:='Pay_Money';
    DBStockIn.Columns.Items[6].FieldName:='handle';
    DBStockIn.Columns.Items[7].FieldName:='Status';
    DBStockIn.Columns.Items[8].FieldName:='note';


    DB_Stock_Detail.Columns.Items[0].FieldName:='Stock_No';

    DB_Stock_Detail.Columns.Items[1].FieldName:='Prod_ID';

    DB_Stock_Detail.Columns.Items[2].FieldName:='Unit_ID';

    DB_Stock_Detail.Columns.Items[3].FieldName:='Price';

    DB_Stock_Detail.Columns.Items[4].FieldName:='Qty';

    DB_Stock_Detail.Columns.Items[5].FieldName:='Rebate';

    DB_Stock_Detail.Columns.Items[6].FieldName:='Total_Moeny';

    bEdit:=false;
    bInsert:=false;
    bSave:=false;


end;
procedure TfrmStock_In.InitComboBoxValue();   //下拉列表框的数据初始化
var tmpado:TADOQuery;
    _sql:string;
    iProdID :integer;
begin
    tmpado:=TADOQuery.Create(self);
    tmpado.Connection:=Main_DM.ADOConn;
    tmpado.Close;
    tmpado.SQL.Clear;

    Cb_InType.Items.Clear;
    Cb_CName.Items.Clear;
    Cb_UserName.Items.Clear;
    Cb_PType.Items.Clear;
    Cb_PName.Items.Clear;

     _sql:='select * from ms_in_type';   //进货类型
    tmpado.SQL.Add(_sql);
    tmpado.Open;
    while not tmpado.Eof do
    begin
        Cb_InType.Items.Add(Trim(tmpado.fieldbyname('in_type').AsString));
        tmpado.Next;
    end;

    tmpado.SQL.Clear;
    tmpado.Close;
     _sql:='select * from ms_customer_hdr';   //客户主表
    tmpado.SQL.Add(_sql);
    tmpado.Open;
    while not tmpado.Eof do
    begin
        Cb_CName.Items.Add(Trim(tmpado.fieldbyname('Custer_Name').AsString));
        tmpado.Next;
    end;

    tmpado.SQL.Clear;
    tmpado.Close;
    _sql:='select * from ms_employee';   //员工表
    tmpado.SQL.Add(_sql);
    tmpado.Open;
    while not tmpado.Eof do
    begin
        Cb_UserName.Items.Add(Trim(tmpado.fieldbyname('Employee_name').AsString));
        tmpado.Next;
    end;

    tmpado.SQL.Clear;
    tmpado.Close;
     _sql:='select * from ms_prod_type';       //产品类型
    tmpado.SQL.Add(_sql);
    tmpado.Open;
    while not tmpado.Eof do
    begin
        Cb_PType.Items.Add(Trim(tmpado.fieldbyname('Prod_Type').AsString));
        tmpado.Next;
    end;


    tmpado.SQL.Clear;
    tmpado.Close;
     _sql:='select * from ms_product';    //产品档案
     tmpado.SQL.Add(_sql);
    tmpado.Open;
    while not tmpado.Eof do
    begin
        Cb_PName.Items.Add(Trim(tmpado.fieldbyname('Pruduct_Des').AsString));
        tmpado.Next;
    end;

    Cb_UserName.Text:=Main_DM.sCurrentUser;
    tmpado.Free;

end;

procedure TfrmStock_In.TVStockInClick(Sender: TObject);    //点击树型列表查找到应的记录,通用函数
begin
    Main_DM.ClickTreeView(TVStockIn,ADOStockIn,'Stock_No');
end;

procedure TfrmStock_In.Cb_PTypeChange(Sender: TObject); //产品类型变动时,改变产品的列表内容
var tmpado:TADOQuery;
    iProdID,_sql:string;
begin
    tmpado:=TADOQuery.Create(self);
    tmpado.Connection:=Main_DM.ADOConn;
    tmpado.SQL.Clear;
    Cb_PName.Items.Clear;
    CB_PName.Text:='';
    tmpado.Close;
     _sql:='select * from ms_prod_type where Prod_Type='''+Trim(Cb_Ptype.Text)+'''';
     tmpado.SQL.Add(_sql);
     tmpado.Open;
     iProdID:=tmpado.FieldByName('ID').AsString;

     tmpado.SQL.Clear;
     tmpado.Close;
     _sql:='select * from ms_product where prod_type='''+iProdID+'''';
     tmpado.SQL.Add(_sql);
     tmpado.Open;
    while not tmpado.Eof do
    begin
        Cb_PName.Items.Add(Trim(tmpado.fieldbyname('Pruduct_Des').AsString));
        tmpado.Next;
    end;
    tmpado.Free;
end;

procedure TfrmStock_In.Cb_PNameChange(Sender: TObject); //
var tmpado:TADOQuery;
    _sql:string;
begin
    tmpado:=TADOQuery.Create(self);
    tmpado.Connection:=Main_DM.ADOConn;
    tmpado.Close;
    tmpado.SQL.Clear;
    _sql:='select Unit_Des from ms_unit,ms_product where Pruduct_Des='''+Trim(Cb_PName.Text)+''' and ms_unit.id=ms_product.prod_unit';
    tmpado.SQL.Add(_sql);
    tmpado.Open;
    Cb_Unit.Text:=Trim(tmpado.FieldByName('Unit_Des').AsString);
    tmpado.Free;

end;

procedure TfrmStock_In.DSStockInDataChange(Sender: TObject; Field: TField);
var _sql:string;
    DT:TDate;
begin
    if not ADOStockIn.IsEmpty then
    begin
    Ed_StockNo.Text:=     Trim(ADOStockIn.FieldByName('stock_no').AsString);
   // TVStockIn.
    if(ADOStockIn.FieldByName('Rec_Date').AsString='') then
    DT_StockDate.Date:=Now()
    else
    DT_StockDate.Date:=   StrToDate(Trim(ADOStockIn.FieldByName('Rec_Date').AsString));
    Cb_InType.Text:=      Trim(ADOStockIn.FieldByName('In_type').AsString);
    Cb_CName.Text:=       Trim(ADOStockIn.FieldByName('cust_id').AsString);
    Ed_TotalMoney.Text:=  Trim(ADOStockIn.FieldByName('total_moeny').AsString);
    Ed_PayMoeny.Text:=    Trim(ADOStockIn.FieldByName('Pay_money').AsString);
    Cb_UserName.Text:=    Trim(ADOStockIn.FieldByName('handle').AsString);
    Cb_State.Text:=       Trim(ADOStockIn.FieldByName('status').AsString);
    Memo.Lines.Text:=     Trim(ADOStockIn.FieldByName('note').AsString);

    ADO_StockDetail.Close;
    ADO_StockDetail.SQL.Clear;
    _sql:='exec sp_cjh_query_stock_detail '''+ADOStockIn.FieldByName('stock_no').AsString+'''';
    ADO_StockDetail.SQL.Add(_sql) ;
    ADO_Stockdetail.Open;

    SB_Save.Enabled:=false;
    SB_Add.Enabled:=true;

    bInsert:=false;  //移动数据记录时把增加标志置为FALSE
    end;
end;

procedure TfrmStock_In.SpeedButton49Click(Sender: TObject);
begin
showMessage(Main_dm.AutoCreateDateTimeNo);
end;

procedure TfrmStock_In.SB_AddClick(Sender: TObject);
begin
    ADOStockIn.Append;  //数据集增加状态

⌨️ 快捷键说明

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