📄 unit_stock_in.~pas
字号:
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 + -