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

📄 unit_stock_in.pas

📁 学习程序,用于初学进销存的参考代码学习程序,用于初学进销存的参考代码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    Ed_StockNo.Text:=Main_DM.AutoCreateDateTimeNo(); //取得自动进货编号

    if(PC_Stock.ActivePageIndex=0) then
    PC_Stock.ActivePageIndex:=1;
    SB_Save.Enabled:=true;    //设置按纽使能状态
    SB_Add.Enabled:=false;
    //清空编辑框
    Cb_Intype.Text:='';
    Cb_CName.Text:='';
    DT_StockDate.Date:=Now();
    Ed_PayMoeny.Text:='0';
    Cb_UserName.Text:=Main_DM.sCurrentUser;
    Ed_TotalMoney.Text:='0';
    Memo.Text:='';

    bInsert:=true;
    ///////////

end;

procedure TfrmStock_In.SB_SaveClick(Sender: TObject);
var newado:TADOQuery;i:integer;
    _sql,newstockno:string;
    E: EDatabaseError;
begin

    newado:=TADOQuery.Create(self);
    newado.Connection:=Main_DM.ADOConn;
    newado.Close;
    newado.SQL.Clear;
    newstockno:= Ed_StockNO.Text;
    _sql:='exec sp_cjh_insert_stock_hdr';
    _sql:=_sql+' '+''''+Ed_StockNO.Text+'''';
    _sql:=_sql+', '+''''+DateTimeToStr(DT_StockDate.Date)+'''';
    _sql:=_sql+', '+''''+Cb_CName.Text+'''';
    _sql:=_sql+', '+''''+Ed_TotalMoney.Text+'''';
    _sql:=_sql+', '+''''+Ed_PayMoeny.Text+'''';
    _sql:=_sql+', '+''''+Cb_UserName.Text+'''';
    _sql:=_sql+', '+''''+Cb_InType.Text+'''';
    _sql:=_sql+', '+''''+Memo.Text+'''';
    newado.SQL.Add(_sql);
    try
    begin
      newado.ExecSQL;
      newado.Free;
      bEdit:=true;
      if  bInsert then
        begin
        Main_DM.NewTreeNode(TVStockIn,newstockno);
        SB_Save.Enabled:=false;
        SB_Add.Enabled:=true;
        end;
    bInsert:=false;   //增加按纽状态标志
    ADOStockIn.Close;
    ADOStockIn.Open;
    ///////如果没有选择中TV的话则下面就会出错,所以要这样处理一下,
      for i:=0 to TVStockIn.Items.Count do
      if TVStockIn.Items.Item[i].Text= newstockno then
        begin
          TVStockIn.Items.Item[i].Selected:=true;
          Main_DM.ClickTreeView(TVStockIn,ADOStockIn,'Stock_No');//定位记录指针
          break;
        end;
    end;
    except
    ShowMessage(E.Message);
    bInsert:=false;
    end;

end;
function TfrmStock_In.CheckEditValue():boolean;
var tmp:TADOQuery;
begin
    tmp:=TADOQuery.Create(self);
    tmp.Connection:=Main_DM.ADOConn;
    tmp.Close;
    tmp.SQL.Clear;
    if Ed_StockNo.Text<>'' then
    begin
        tmp.SQL.Add('select Stock_no from Stock_hdr where Stock_no='''+Ed_StockNo.Text+''' ');
        tmp.Open;
        if tmp.IsEmpty then
        begin
        ShowMessage('请先保存上面的数据,再增加进货产品的记录!');
        result:=false;
        end;

    end;
    if  Ed_StockNo.Text=''  then result:=false;

    if (Cb_PType.Text='') or (Cb_PName.Text='') or (StrToFloat(Ed_Qty.Text) <=0) then
    begin
    ShowMessage('输入数据类型不正确,请检查并重新输入!');
    if Cb_PType.Text='' then Cb_PType.SetFocus
    else if Cb_PName.Text='' then Cb_PName.SetFocus
    else if StrToFloat(Ed_Qty.Text) <=0  then   Ed_Qty.SetFocus;
    result:=false;
    end;
end;
procedure TfrmStock_In.BtAddClick(Sender: TObject);
var newado:TADOQuery;
    _sql:string;
begin
    ////////////////////检查数据类型是否正确////////////////
    if CheckEditValue() then
    begin
    newado:=TADOQuery.Create(self);
    newado.Connection:=Main_DM.ADOConn;
    newado.Close;
    newado.SQL.Clear;
    _sql:='exec sp_cjh_insert_stock_detail';
    _sql:=_sql+' '+''''+Trim(Ed_StockNo.Text)+'''';
    _sql:=_sql+','+''''+Trim(Cb_PType.Text)+'''';
    _sql:=_sql+','+''''+Trim(Cb_PName.Text)+'''';
    _sql:=_sql+','+''''+Trim(Cb_Unit.Text)+'''';
    _sql:=_sql+','+''''+Trim(Ed_Qty.Text)+'''';
    _sql:=_sql+','+''''+Trim(Ed_Price.Text)+'''';
    _sql:=_sql+','+''''+Trim(Ed_Rebate.Text)+'''';
    _sql:=_sql+','+'0';
    newado.SQL.Add(_sql);
    newado.ExecSQL;
    showmessage('保存成功');
    ClearEditValue();
    ADO_StockDetail.Close;
    ADO_Stockdetail.Open;
    
    Ed_TotalMoney.Text:=GetTotal_Money();

    end;

end;
//取得每一次增加或减少产品数据后的应付款总数
function TfrmStock_In.GetTotal_Money():string;
var tmp:TADOQuery;
    sNo:string;
begin
    tmp:=TADOQuery.Create(self);
    tmp.Connection:=Main_DM.ADOConn;
    tmp.Close();
    tmp.SQL.Clear;
    tmp.SQL.Add('exec sp_cjh_get_stock_total_money '''+Ed_StockNo.Text+'''');
    tmp.Open;
    sNo:=tmp.FieldByName('total_money').AsString;
    tmp.Free;
    result:=sNo;

end;

procedure TfrmStock_In.ClearEditValue();
begin
    Cb_PType.Text:='';
    Cb_PName.Text:='';
    Cb_Unit.Text:='';
    Ed_Price.Text:='0';
    Ed_Qty.Text:='0';
end;
procedure TfrmStock_In.PC_StockChanging(Sender: TObject;
  var AllowChange: Boolean);
begin
 {   if (PC_Stock.ActivePageIndex:=1 or  bEdit or bInsert) then
    begin
        if(MessageBox(handle,'取消当前操作吗?','提示!',MB_YESNO)=IDYES)

    end;     }

end;

procedure TfrmStock_In.Ed_PayMoenyChange(Sender: TObject);
begin
    try
        StrToFloat(Ed_PayMoeny.Text);
     except
        begin
        ShowMessage('请输入正确的数据类型');
        Ed_PayMoeny.SetFocus;
        end;
        end;

end;

procedure TfrmStock_In.Ed_PriceChange(Sender: TObject);
begin
    try
        StrToFloat(Ed_Price.Text);
     except
        begin
        ShowMessage('请输入正确的数据类型');
        Ed_Price.SetFocus;
        end;
        end;
end;

procedure TfrmStock_In.Ed_QtyChange(Sender: TObject);
begin
   try
        StrToFloat(Ed_Qty.Text);
     except
        begin
        ShowMessage('请输入正确的数据类型');
        Ed_Qty.SetFocus;
        end;
        end;

end;

procedure TfrmStock_In.Ed_RebateChange(Sender: TObject);
begin
   try
        StrToFloat(Ed_Rebate.Text);
     except
        begin
        ShowMessage('请输入正确的数据类型');
        Ed_Rebate.SetFocus;
        end;
        end;

end;

procedure TfrmStock_In.BtDeleteClick(Sender: TObject);
var tmp:TADOQuery;iID:string;
begin
    tmp:=TADOQuery.Create(self);
    tmp.Connection:=Main_DM.ADOConn;
    tmp.Close;
    tmp.SQL.Clear;

    if not ADO_StockDetail.IsEmpty then
    begin
    if(MessageBox(handle,'确定删除这笔记录吗?', '提示', MB_YESNO)=IDYES) then
    begin
    iID:=ADO_StockDetail.FieldByName('ID').AsString;
    tmp.SQL.Add('delete from stock_detail where id='+iID+'');
    tmp.ExecSQL;
    Ed_TotalMoney.Text:=GetTotal_Money();
    end;
    end;
    tmp.Free;
    ADO_StockDetail.Close;
    ADO_StockDetail.Open;
end;

procedure TfrmStock_In.SB_DeleteClick(Sender: TObject);
var sStockNo:string;
    tmp:TADOQuery;i:integer;
begin
    tmp:=TADOQuery.Create(self);
    if not ADOStockIn.IsEmpty  then
    begin

        if(MessageBox(handle,'确定删除这笔记录吗?','提示..',MB_YESNO)=IDYES) then
        begin
        tmp.Connection:=Main_DM.ADOConn;
        tmp.Close;
        tmp.SQL.Clear;
        sStockNo:=ADOStockIn.FieldByName('stock_no').AsString;
        tmp.SQL.Add('delete from stock_hdr where stock_no='''+sStockNo+'''');
        tmp.ExecSQL;

        ADOStockIn.Close;
        ADOStockIn.Open;

        for i:=0 to TVStockIn.Items.Count   do
          begin
          if(TVStockIn.Items.Item[i].Text=sStockNo) then
            begin
            TVStockIn.Items.Item[i].Delete;
            break;
            end;
          end;
        end;
    end;
    tmp.Free;

end;

procedure TfrmStock_In.Cb_InTypeExit(Sender: TObject);
begin
    Main_DM.ExistEdit_Text_Validate('','select * from ms_in_type where In_Type='''+Cb_InType.Text+'''');
end;

procedure TfrmStock_In.Cb_CNameExit(Sender: TObject);
begin
    Main_DM.ExistEdit_Text_Validate('','select * from ms_customer_hdr where Custer_Name='''+Cb_CName.Text+'''');
end;
procedure TfrmStock_In.JudgeDataSet_ChangeValue();//判断数据集是否被改变了值,如果改变了则需要激活保存按纽
begin

end;

procedure TfrmStock_In.Cb_InTypeEnter(Sender: TObject);
begin
 sOldValue:=Cb_InType.Text+Cb_CName.Text+DateToStr(DT_StockDate.Date)+Ed_PayMoeny.Text+Ed_TotalMoney.Text+Memo.Text;
end;        

procedure TfrmStock_In.Cb_InTypeChange(Sender: TObject);
begin
 sNewValue:= Cb_InType.Text+Cb_CName.Text+DateToStr(DT_StockDate.Date)+Ed_PayMoeny.Text+Ed_TotalMoney.Text+Memo.Text;
 if not bInsert then
 begin
       // if(sOldValue=sNewValue)  then SB_Save.Enabled:=false;
        if(sOldValue<>sNewValue) then
        begin
        SB_Save.Enabled:=true;
        bEdit:=true;
        end;
 end;
end;

procedure TfrmStock_In.SpeedButton43Click(Sender: TObject);
begin
//Main_DM.ExitActivePage;
end;

end.

⌨️ 快捷键说明

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