📄 unitprodstock.~pas
字号:
unit UnitProdStock;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, ComCtrls, DBTables, Db,
Mask, DBCtrls;
type
TfrmProdStock = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
dbgProdStock: TDBGrid;
Panel1: TPanel;
Query1: TQuery;
Table1: TTable;
TabSheet2: TTabSheet;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Query2: TQuery;
Label1: TLabel;
BitBtn4: TBitBtn;
rgProdDictionary: TRadioGroup;
eProdStockFind: TEdit;
BitBtn1: TBitBtn;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Edit1: TEdit;
Table2: TTable;
Query3: TQuery;
Button1: TButton;
Button2: TButton;
TabSheet3: TTabSheet;
DBGrid2: TDBGrid;
Query4: TQuery;
DataSource2: TDataSource;
Table3: TTable;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Button3: TButton;
Button4: TButton;
BitBtn5: TBitBtn;
Button5: TButton;
Panel2: TPanel;
Button6: TButton;
Button7: TButton;
Edit2: TEdit;
DBEdit2: TDBEdit;
DateTimePicker3: TDateTimePicker;
Edit3: TEdit;
Label9: TLabel;
Button8: TButton;
Query5: TQuery;
Label10: TLabel;
DateTimePicker4: TDateTimePicker;
DateTimePicker5: TDateTimePicker;
Label11: TLabel;
Label12: TLabel;
procedure BitBtn4Click(Sender: TObject);
//procedure BitBtn8Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure eProdStockFindChange(Sender: TObject);
procedure rgProdDictionaryClick(Sender: TObject);
// procedure DBEdit1Enter(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
//procedure DBEdit2Enter(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure DBEdit3Enter(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure BitBtn5Click(Sender: TObject);
// procedure Edit2Enter(Sender: TObject);
procedure Edit2Click(Sender: TObject);
procedure DBEdit2Click(Sender: TObject);
procedure Edit3Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure TabSheet3Enter(Sender: TObject);
procedure DBEdit4Enter(Sender: TObject);
procedure DBGrid2CellClick(Column: TColumn);
procedure Table3FilterRecord(DataSet: TDataSet; var Accept: Boolean);
procedure TabSheet2Show(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure zdyCurStock(dCheckDate:TDate); // 计算当前各种物品的库存
end;
var
frmProdStock: TfrmProdStock;
pt, j:integer;
jie:real;
riqiri:Tdatetime ;
st:string;
implementation
uses UnitDM, UnitProdStockPrt, UnitQueryID, UnitProdPrtkehu, Unitmonthsum,
UnitProdMain, UnitProdVoucher;
{$R *.DFM}
procedure TfrmProdStock.zdyCurStock(dCheckDate:TDate); // 计算当前各种物品的库存
var
sCardIDFrom,sProdID:string;
iOriginNum,iThisIn,iThisOut,iCurrentNum:integer;
begin
//==============
// 清空原表
//==============
with dm.qryExe do
begin
close;
sql.clear;
sql.add('Delete from ProdStock ');
execsql;
end; //with
with dm.tabProdIDHistory do
begin
open;
first;
while not eof do
begin
sProdID:=fieldbyname('ProdID').asstring;
if sProdID='' then
dm.tabProdIDHistory.Delete; //prodID为空的去掉
next;
end;
end;
sCardIDFrom:=formatdatetime('yymmdd',dCheckDate+1)+'000';
with dm.tabProdIDHistory do
begin
close;
open;
first;
while not eof do
begin
sProdID:=fieldbyname('ProdID').asstring;
if sProdID='' then
begin
dm.tabProdIDHistory.Delete;
next;
end;
//得到上月盘存
iOriginNum:=dm.zdyGetProdCheckNum(dCheckDate,sProdID);
//得到本月入库
with dm.qryExe do
begin
close;
sql.clear;
sql.add('select sum(Number) from ProdInCard ');
sql.add('where CardID >= :StartID ');
sql.add('and ProdID = :ProdID ');
parambyname('StartID').asstring:=sCardIDFrom;
parambyname('ProdID').asstring:=sProdID;
open;
iThisIn:=fields[0].asinteger;
end; //with
//得到本月出库
with dm.qryExe do
begin
close;
sql.clear;
sql.add('select sum(Number) from ProdOutCard ');
sql.add('where CardID >= :StartID ');
sql.add('and ProdID = :ProdID ');
parambyname('StartID').asstring:=sCardIDFrom;
parambyname('ProdID').asstring:=sProdID;
open;
iThisOut:=fields[0].asinteger;
end; //with
iCurrentNum:=iOriginNum + iThisIn - iThisOut;
with dm.tabProdStock do
begin
open;
insert;
fieldbyname('ProdID').asstring:=sProdID;
fieldbyname('Number').asinteger:=iCurrentNum;
post;
end; //with
next;
end; //while
end; //with
end;
procedure TfrmProdStock.BitBtn4Click(Sender: TObject);
begin
//if frmProdVoucher.kuw<>1 then
// begin
// dm.dsProdStock.dataset:=dm.tabProdStock;
//dm.qryExe.active:=false;
// dm.tabProdStock.active:=false;
// close;
// end
// else
// begin
//frmProdVoucher.kuw:=0;
close;
// end;
end;
{
procedure TfrmProdStock.BitBtn8Click(Sender: TObject);
var
sProdID:string;
begin
with dm.qryExe do
begin
close;
sql.Clear;
if rgProdDictionary.ItemIndex = 0 then
begin
sql.add('select * from ProdDictionary where FigID = :FigID');
parambyname('FigID').asstring:=eProdStockFind.text;
end
else if rgProdDictionary.ItemIndex = 1 then
begin
sql.add('select * from ProdDictionary where ProdName = :ProdName');
parambyname('ProdName').asstring:=eProdStockFind.text;
end
else
exit;
open;
if recordcount = 0 then
begin
showmessage('没找到该产品!');
exit;
end;
sProdID:=fieldbyname('ProdID').asstring;
end; //with
with dm.tabProdStock do
begin
setkey;
findkey([sProdID]);
end; //with
dbgProdStock.setfocus;
end;
}
procedure TfrmProdStock.BitBtn1Click(Sender: TObject);
begin
with frmProdStockPrt do
begin
QRLDate.caption:=datetostr(date);
QuickRep1.preview;
end; //with
end;
procedure TfrmProdStock.eProdStockFindChange(Sender: TObject);
begin
with dm.qryExe do
begin
close;
sql.Clear;
if rgProdDictionary.ItemIndex = 0 then
begin
sql.add('select * from ProdDictionary where FigID like :mi');
paramByName('mi').asstring:=eProdStockFind.text+'%';
end
else if rgProdDictionary.ItemIndex = 1 then
begin
sql.add('select * from ProdDictionary where ProdName like :mi');
parambyname('mi').asstring:=eProdStockFind.text+'%';
end
else
begin
eProdStockFind.text:='';
exit;
end;
open;
if recordcount = 0 then
begin
eProdStockFind.text:='';
showmessage('没找到该产品!');
exit;
end;
// sProdID:=fieldbyname('ProdID').asstring;
end; //with
with table1 do begin
open;
first;
while not eof do
delete;
next;
end;//with
//=========抄写到table1========
dm.qryExe.First;
while not dm.qryExe.eof do
begin
table1.append;
table1.FieldByName('FigID').asstring:=dm.qryExe.fieldbyname('FigID').asstring;
table1.FieldByName('ProdName').asstring:=dm.qryExe.fieldbyname('ProdName').asstring;
table1.FieldByName('prodid').asstring:=dm.qryExe.fieldbyname('prodid').asstring;
with query1 do
begin
close;
sql.Clear;
sql.add('select * from ProdStock where prodid =:mi');
paramByName('mi').asstring:=dm.qryExe.fieldbyname('prodid').asstring;
open;
end;
table1.FieldByName('Number').asinteger:=query1.fieldbyname('Number').asinteger;
table1.post;
dm.qryExe.next;
end;//while
//==========从ProdStock2中去掉数量为0的记录========
with dm.qryExe do
begin
close;
sql.clear;
sql.add('Delete from ProdStock2 where Number=0 ');
execsql;
end; //with
dm.dsProdStock.dataset:=table1;
end;
procedure TfrmProdStock.rgProdDictionaryClick(Sender: TObject);
begin
if rgProdDictionary.ItemIndex = 0 then
Label1.caption:='请输入图号:'
else Label1.caption:='请输入产品名称:';
end;
{
procedure TfrmProdStock.DBEdit1Enter(Sender: TObject);
begin
frmCommQueryID.top:=200;//DBEdit1.Height+DBEdit1.top;
frmCommQueryID.left:=200;//DBEdit1.left;
//Table2.Close;
DBEdit1.color:=claqua;
DBEdit1.setfocus;
frmCommQueryID.PageControl1.ActivePageIndex:=2;
dm.tabManufacturer.filtered:=false;
dm.tabManufacturer.open;
frmCommQueryID.ActiveControl:=frmCommQueryID.dbgManufacturer;
if frmCommQueryID.showmodal = mrok then
begin
Edit1.SetFocus;
Edit1.text:=dm.tabManufacturer.fieldbyname('ManufacturerID').asstring;
with dm.tabManufacturer do
begin
filter:=format('ManufacturerID = ''%S''',[Edit1.text]);
filtered:=true;
close;
open;
end; //with
DBEdit1.setfocus;
DBEdit1.text:=dm.tabManufacturer.fieldbyname('Manufacturer').asstring;
dm.tabManufacturer.filtered:=false;
end; //if
dm.tabManufacturer.close;
DBGrid1.setfocus;
showmessage(Edit1.text);
end;
}
procedure TfrmProdStock.BitBtn3Click(Sender: TObject);
var
nam,fig,vnote,bat,vout,id:string;
vdate:Tdate;
num:integer;
jia,vbox:real;
begin
if Edit2.text='' then
begin
showmessage('请输入客户名称!');
exit;
end;
with Query3 do //清客户表
begin
close;
sql.clear;
sql.add('Delete from kehu ');
execsql;
end; //with
// showmessage(Edit1.text);
with Query2 do
begin
close;
sql.Clear;
sql.Add('select * from ProdOutCard');
sql.Add('where OutDate between :v_from and :v_to and ManufacturerID=:khID ');
sql.Add('order by OutDate desc');
parambyname('v_from').asdatetime:=DateTimePicker1.date;
parambyname('v_to').asdatetime:=DateTimePicker2.date;
parambyname('khID').asstring:=Edit1.text;
open;
if recordcount = 0 then
begin
showmessage('记录为零!');
table2.Close;
exit;
end;
first;
while not eof do
begin
id:=fieldbyname('ProdID').asstring;
vdate:=fieldbyname('OutDate').asdatetime;
vnote:=fieldbyname('Note').asstring;
bat:=fieldbyname('ProcBatID').asstring;
num:=fieldbyname('Number').asinteger;
vbox:=fieldbyname('Box').asfloat;
vout:=fieldbyname('OuterID').asstring;
Query3.close;
Query3.sql.Clear;
Query3.sql.Add('select * from ProdDictionary');
Query3.sql.Add('where ProdID=:pID ');
Query3.parambyname('pID').asstring:=id;
Query3.open;
nam:=Query3.fieldbyname('ProdName').asstring;
fig:=Query3.fieldbyname('FigID').asstring;
jia:=Query3.fieldbyname('SellPrice').asfloat;
Query3.close;
Query3.sql.Clear;
Query3.sql.Add('select * from CommStaff');
Query3.sql.Add('where StaffID=:pID ');
Query3.parambyname('pID').asstring:=vout;
Query3.open;
vout:=Query3.fieldbyname('StaffName').asstring;
Table2.open;
Table2. insert;
Table2.fieldbyname('ProdFig').asstring:=fig;
Table2.fieldbyname('ProdName').asstring:=nam;
Table2.fieldbyname('OutDate').asDateTime:=vdate;
Table2.fieldbyname('Number').asinteger:=num;
Table2.fieldbyname('Box').asfloat:=vbox;
Table2.fieldbyname('ProcBat').asstring:=bat;
Table2.fieldbyname('Note').asstring:=vnote;
Table2.fieldbyname('Outer').asstring:=vout;
Table2.fieldbyname('danjia').asfloat:=jia;
Table2.fieldbyname('jine').asfloat:=strtofloat(formatfloat('0.00',num*jia));
Table2.Post;
next;
end;
end; //with
end;
procedure TfrmProdStock.FormShow(Sender: TObject);
begin
st:='';
Button4.Enabled:=false;
table3.Open;
Edit2.text:='';
// DBEdit1.color:=clwindow;
DateTimePicker1.date:=date-30;
DateTimePicker2.date:=date;
DateTimePicker3.date:=date;
end;
procedure TfrmProdStock.BitBtn2Click(Sender: TObject);
begin
//frmProdprtkehu.Table1.close;
// dm.tabManufacturer.close;
// DBEdit1.color:=clwindow;
Edit2.text:='';
// Table2.close;
// frmProdMain.show;
close;
end;
procedure TfrmProdStock.Button1Click(Sender: TObject);
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -