📄 unttoutaccessory.pas
字号:
(*===========================================================*)
(* *)
(* Jerk Computer Assembly Manager *)
(* *)
(* 程序作者:杨芹勍 *)
(* 武汉科技大学 理学院 信息与计算科学031班 *)
(* 武汉科技大学 莘特工作室 *)
(* *)
(* IDE:Borland Delphi 2006 Update 2 *)
(* 第三方控件:Raize 4.03 *)
(* 数据库:Microsoft SQL Server 2000 *)
(* 数据库访问引擎:原生ADO(ADODB_TLB) *)
(* 数据库管理引擎:JERK DBMANAGER ALPHA *)
(* *)
(* 此软件及源代码归 JERK SYSTEM 版权所有 *)
(* (C)Copyright 2002-2006 Jerk System. *)
(* *)
(*===========================================================*)
unit untTOutAccessory;
interface
uses
SysUtils,
Variants,
Classes,
Forms,
StdCtrls,
ADODB_TLB,
JCAMTableView,
JCAMConsts,
JCAMUtils;
const
TN_OUTACCESSORY: string = 't_OutAccessory';
VN_OUTACCESSORY: string = 'v_OutAccessory';
KFN_OUTACCESSORY: string = 'OutAccessory_ID';
FN_INACCESSORYNAME: string = 'InAccessory_Name';
FN_CLIENTNAME: string = 'ClientName';
FN_OUTDATE: string = 'OutDate';
FN_OUTNUMBER: string = 'OutNumber';
FN_INPRICE: string = 'InPrice';
FN_OUTPRICE: string = 'OutPrice';
FN_PROFIT: string = 'Profit';
PN_SAVEOUTACCESSORYINFO: string = 'sp_SaveOutAccessoryInfo';
PN_DELETEOUTACCESSORYINFO: string = 'sp_DeleteOutAccessoryInfo';
PN_CHECKACCESSORYENOUGH: string = 'sp_CheckAccessoryEnough';
type
TTableOutAccessory = class( TCustomTableView )
private
public
property Connection;
function CheckAccessoryEnough( sbxInfoList: TScrollBox ): Boolean;
function TotalInPricesByCondition( sCondition: string ): Integer;
function TotalOutPricesByCondition( sCondition: string ): Integer;
function TotalProfitByCondition( sCondition: string ): Integer;
end;
implementation
uses
untTField,
untTInAccessory;
{ TTableOutAccessory }
function TTableOutAccessory.CheckAccessoryEnough(
sbxInfoList: TScrollBox ): Boolean;
const
PVSTR_INACCESSORYID: string = 'InAccrssory_ID';
PVSTR_OUTNUMBER: string = 'OutNumber';
PVSTR_ISENOUGH: string = 'IsEnough';
var
tia: TTableInAccessory;
cmd: _Command;
par: _Parameter;
cmp: TComponent;
pfp: PFieldProp;
sInAccessoryName, sOutNumber: string;
n, nInAccessoryID, nOutNumber: Integer;
begin
{ 检查配件是否足够 }
Result := True;
if ( Connection <> nil ) and ( sbxInfoList <> nil ) then
begin
sInAccessoryName := EmptyStr;
sOutNumber := EmptyStr;
nOutNumber := 0;
for n := 0 to sbxInfoList.ComponentCount - 1 do
begin
cmp := sbxInfoList.Components[ n ];
if cmp is TCustomEdit then
begin
// TODO: 在sbx的子控件中查找编辑框
pfp := PFieldProp( Pointer( TCustomEdit( cmp ).Tag ) );
if pfp^.FieldName = FN_INACCESSORYNAME then
sInAccessoryName := TCustomEdit( cmp ).Text;
if pfp^.FieldName = FN_OUTNUMBER then
begin
sOutNumber := TCustomEdit( cmp ).Text;
nOutNumber := StrToInt( sOutNumber );
end;
if ( sInAccessoryName <> EmptyStr ) and ( sOutNumber <> EmptyStr ) then
Break;
end;
end;
// TODO: 获取进货配件ID
tia := TTableInAccessory.Create;
with tia do
begin
Connection := Self.Connection;
InAccessoryName := sInAccessoryName;
nInAccessoryID := InAccessoryID;
end;
FreeAndNil( tia );
if nInAccessoryID <> -1 then
begin
// TODO: 调用存储过程
cmd := CoCommand.Create;
cmd.Set_ActiveConnection( Connection );
cmd.CommandText := PN_CHECKACCESSORYENOUGH;
cmd.CommandType := adCmdStoredProc;
par := cmd.CreateParameter( PVSTR_RETURN, adVarChar,
adParamReturnValue, 100, EmptyParam );
cmd.Parameters.Append( par );
par := cmd.CreateParameter( PVSTR_INACCESSORYID, adVarChar, adParamInput,
100, nInAccessoryID );
cmd.Parameters.Append( par );
par := cmd.CreateParameter( PVSTR_OUTNUMBER, adVarChar, adParamInput, 100,
nOutNumber );
cmd.Parameters.Append( par );
par := cmd.CreateParameter( PVSTR_ISENOUGH, adVarChar, adParamOutput, 100,
EmptyParam );
cmd.Parameters.Append( par );
cmd.Execute( EmptyParam, EmptyParam, adCmdStoredProc + adExecuteNoRecords
);
if cmd.Parameters[ PVSTR_ISENOUGH ].Value = 0 then
Result := False;
end;
end;
end;
function TTableOutAccessory.TotalInPricesByCondition( sCondition: string ):
Integer;
begin
Result := GetFieldSumByCondition( FN_INPRICE, VN_OUTACCESSORY, sCondition );
end;
function TTableOutAccessory.TotalOutPricesByCondition(
sCondition: string ): Integer;
begin
Result := GetFieldSumByCondition( FN_OUTPRICE, VN_OUTACCESSORY, sCondition );
end;
function TTableOutAccessory.TotalProfitByCondition( sCondition: string ):
Integer;
begin
Result := TotalOutPricesByCondition( sCondition ) - TotalInPricesByCondition(
sCondition );
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -