📄 unitdm.pas
字号:
unit UnitDM;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables;
type
TDM = class(TDataModule)
qryExe: TQuery;
dsExe: TDataSource;
tabStaff: TTable;
dsStaff: TDataSource;
tabManufacturer: TTable;
dsManufacturer: TDataSource;
tabWorkShop: TTable;
dsWorkShop: TDataSource;
// tabEmployee: TTable;
// dsEmployee: TDataSource;
tabProdDictionary: TTable;
dsProdDictionary: TDataSource;
tabProdInCard: TTable;
dsProdInCard: TDataSource;
tabProdOutCard: TTable;
dsProdOutCard: TDataSource;
tabProdInCardProdName: TStringField;
tabProdInCardCardID: TStringField;
tabProdInCardProdID: TStringField;
tabProdInCardNote: TStringField;
dsProdWasteBook: TDataSource;
tabProdWasteBook: TTable;
tabProdStock: TTable;
dsProdStock: TDataSource;
tabProdIDHistory: TTable;
tabProdMonthCheck: TTable;
tabProdCheckDiary: TTable;
tabProdStockProdID: TStringField;
tabProdStockProdName: TStringField;
tabProdSetAcc: TTable;
dsProdSetAcc: TDataSource;
tabProdSetAccProdID: TStringField;
tabProdSetAccPrice: TFloatField;
tabProdSetAccThisOutTotal: TFloatField;
tabProdSetAccThisNumTotal: TFloatField;
// tabEmployeeEmployeeID: TStringField;
// tabEmployeeEmplyee: TStringField;
tabProdStockNumber: TIntegerField;
tabManufacturerManufacturerID: TStringField;
tabManufacturerManufacturer: TStringField;
tabProdWasteBookCardID: TStringField;
tabProdWasteBookMonth: TStringField;
tabProdWasteBookDay: TStringField;
tabProdWasteBookProdID: TStringField;
tabProdWasteBookInNum: TIntegerField;
tabProdWasteBookOutNum: TIntegerField;
tabProdWasteBookWasteBookNum: TIntegerField;
tabProdWasteBookNote: TStringField;
tabProdSetAccProdName: TStringField;
tabProdInCardCheckerID: TStringField;
tabProdInCardChecker: TStringField;
tabProdInCardFigID: TStringField;
tabProdOutCardCardID: TStringField;
tabProdOutCardProdID: TStringField;
tabProdOutCardOuterID: TStringField;
tabProdOutCardManufacturerID: TStringField;
tabProdOutCardNote: TStringField;
tabProdOutCardProdName: TStringField;
tabProdOutCardFigID: TStringField;
tabProdInCardInDate: TDateField;
tabProdOutCardOuter: TStringField;
tabProdOutCardOutDate: TDateField;
tabProdOutCardManufacturer: TStringField;
tabProdDictionaryProdID: TStringField;
tabProdDictionaryFigID: TStringField;
tabProdDictionaryProdName: TStringField;
tabProdDictionaryMakePrice: TFloatField;
tabProdDictionarySellPrice: TFloatField;
dsProdIDHistory: TDataSource;
tabProdIDHistoryProdID: TStringField;
tabProdIDHistoryProdName: TStringField;
tabProdIDHistoryFigID: TStringField;
tabProdIDHistoryContain: TIntegerField;
tabProdWasteBookYear: TStringField;
tabProdWasteBookProcBatID: TStringField;
tabProdWasteBookOutBox: TFloatField;
tabProdWasteBookWasteBookBox: TIntegerField;
tabProdWasteBookInOutFlag: TBooleanField;
tabProdInCardProcBatID: TStringField;
tabProdOutCardProcBatID: TStringField;
tabProdWasteBookBoxLeft: TIntegerField;
tabProdWasteBookBoxBat: TStringField;
tabProdOutCardBox: TFloatField;
tabProdWasteBookSerialNum: TSmallintField;
tabProdSetAccAccDate: TDateField;
tabMaterDictionary: TTable;
dsMaterDictionary: TDataSource;
tabProdDictionaryWeight: TFloatField;
tabMaterDictionaryBDEDesigner: TIntegerField;
tabMaterDictionaryBDEDesigner2: TStringField;
tabMaterDictionaryBDEDesigner3: TStringField;
tabMaterDictionaryBDEDesigner4: TFloatField;
tabProdStockFigID: TStringField;
tabProdSetAccFigID: TStringField;
tabProdDictionaryRubbName: TStringField;
DataSource1: TDataSource;
Table1: TTable;
Table1BDEDesigner: TStringField;
Table1BDEDesigner2: TFloatField;
Table1BDEDesigner3: TFloatField;
Table1BDEDesigner4: TFloatField;
Table1BDEDesigner5: TFloatField;
Table1BDEDesigner6: TFloatField;
Table1BDEDesigner7: TFloatField;
tabProdInCardNumber: TIntegerField;
tabProdSetAccLastNum: TIntegerField;
tabProdSetAccThisIn: TIntegerField;
tabProdSetAccThisOut: TIntegerField;
tabProdSetAccThisNum: TIntegerField;
tabProdDictionaryContain: TIntegerField;
Table2: TTable;
Table1BDEDesigner8: TFloatField;
Table3: TTable;
tabProdOutCardNumber: TIntegerField;
tabManufacturerToxudizi: TStringField;
tabManufacturerYobi: TIntegerField;
tabManufacturerLixire: TStringField;
tabManufacturerDihuhama: TStringField;
tabProdDictionaryTanhuang: TIntegerField;
tabProdDictionaryGujia: TIntegerField;
tabProdDictionaryGjxh: TStringField;
tabProdDictionaryThxh: TStringField;
tabProdDictionaryXioujia: TFloatField;
procedure tabProdSetAccCalcFields(DataSet: TDataSet);
procedure tabRubbMethodCalcFields(DataSet: TDataSet);
procedure tabRubbWasteBookCalcFields(DataSet: TDataSet);
procedure tabProdIDHistoryAfterScroll(DataSet: TDataSet);
procedure tabMaterDictionaryFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
procedure tabProdDictionaryFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
procedure tabStaffFilterRecord(DataSet: TDataSet; var Accept: Boolean);
private
{ Private declarations }
public
{ Public declarations }
function zdyCalLast3Bit(sCardID:string;dDate:Tdate):string; // 决定单号
//===================================================
// 原材料部分函数
function zdyGetmaterCheckDate():TDate;
//===================================================
//===================================================
// 混炼胶部分函数
//===================================================
function zdyGetjiaoCheckDate():TDate;//查上次胶料结帐日期
//===================================================
// 硫化部分函数
//===================================================
//===================================================
// 成品部分函数
//===================================================
procedure zdyProdInsertHistory(sProdID:string);
function zdyProdCardID(dDate:TDate):string; //决定单号
function zdyProdIFBlank(bInDraw:boolean):boolean; //函数声明 表格是否为空
function zdyGetProdCheckNum(dCheckDate:TDate;sProdID:string):integer; //函数声明 查询上月盘存
function zdyGetProdCheckDate():TDate; //函数声明 查询上月结账日期
function zdyGetProdPrice(sProdID:string):real; //函数声明 查询上月结账日期
end;
var
DM: TDM;
implementation
uses UnitProdInCard, UnitProdOutCard, UnitProdWasteBook, UnitDictionary,
UnitProdStock, UnitAccSet, Unit_Mater_SumCfg, Unit_Rubb_SumCfg;// UnitDM;
{$R *.DFM}
function TDM.zdyCalLast3Bit(sCardID:String;dDate:Tdate):string; // 决定单号
var
iMan:integer;
begin
//====================================
// 尾数后3位加1 例如: 001 --> 002
//====================================
iMan:=(strtoint(sCardID[7]+sCardID[8]+sCardID[9]));
Inc(iMan);
sCardID:=formatdatetime('ymmdd',dDate);
if iMan div 10 = 0 then //个位
begin
sCardID:=sCardID+'00'+inttostr(iMan);
end;//if
if (iMan div 10 <> 0) and (iMan div 100 = 0) then //十位
begin
sCardID:=sCardID+'0'+inttostr(iMan);
end;//if
if (iMan div 10 <> 0) and
(iMan div 100 <> 0) and
(iMan div 1000 = 0) then //百位
begin
sCardID:=sCardID+inttostr(iMan);
end;//if
result:= sCardID;
end;
procedure TDM.zdyProdInsertHistory(sProdID:string);
begin
with dm.tabProdIDHistory do
begin
open;
setkey;
if not findkey([sProdID]) then
begin
insert;
fieldbyname('ProdID').asstring:=sProdID;
post;
end;//if
close;
end; //with
end;
function TDM.zdyProdCardID(dDate:TDate):string; //决定单号的函数
var
sInCardID,sOutCardID,sCardID:string;
begin
sInCardID:='';
sOutCardID:='';
with dm.qryExe do
begin
close;
sql.clear;
sql.add('select max(CardID)as CardID from ProdInCard where CardID like :CardID ');
parambyname('CardID').asstring:=formatdatetime('yymmdd',dDate)+'%';
open;
last;
// if recordcount = 0 then
sInCardID:=fieldbyname('CardID').asstring;
end; //with
with dm.qryExe do
begin
close;
sql.clear;
sql.add('select max(CardID)as CardID from ProdOutCard where CardID like :CardID ');
parambyname('CardID').asstring:=formatdatetime('yymmdd',dDate)+'%';
open;
last;
// if recordcount = 0 then
sOutCardID:=fieldbyname('CardID').asstring;
end; //with
//============================================================
// 如果当前日期没有录入过数据 默认sCardID 为 当前日期 + 001
//============================================================
if (sInCardID = '' ) and (sOutCardID = '') then
begin
sCardID:=formatdatetime('yymmdd',dDate)+'001';
result:=sCardID;
exit;
end; //if
if sInCardID = '' then sInCardID := '000000000';
if sOutCardID = '' then sOutCardID := '000000000';
//==================================================
// 找出入库单 和 出库单 之中号码最大 附值于 sCardID
//==================================================
if sInCardID > sOutCardID then //把较大的单号负值于 sCardID 变量
sCardID := sInCardID
else
sCardID := sOutCardID;
//====================
// 函数返回
//====================
result := zdyCalLast3Bit(sCardID,dDate);
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -