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