?? item.bas
字號:
Attribute VB_Name = "mdlItem"
' 作者: 蔡奇科
' 日期:1998.07.14
'***********************************
'修改人:肖志華 (Oracle 版) 1998/10/09
'***********************************
'說明:
'本模塊提供三種類型的接口:
Option Explicit
Declare Function BringWindowToTop Lib "user32" (ByVal hWnd As Long) As Long
'參數(shù):
'strOP :“I”插入,“D”刪除
'**** 要實(shí)現(xiàn)修改功能,請先刪除再新增 ****
'第1類:提供ItemActivity的ID 或 ItemActivityDeatilID 的ID 將一次全部處理本模塊所涉及的6個(gè)余額(發(fā)生額)表和Item中的庫存字段
'Public Function ChangeAllItem_from_Activity(strOP As String, lngActivityID As Long) As Boolean
' |
' ------ Public Function DeleteAllItem_from_ActivityDetail(strOP As String, lngActivityDetailID As Long) As Boolean
'第2類:數(shù)據(jù)直接從數(shù)據(jù)庫(ItemActivityDetail)中獲得后改變余額表(或發(fā)生額表)-- 每個(gè)表單獨(dú)處理
'僅改變Item中的庫存字段
'!!!注意:改變發(fā)生額表(xxxDaily)時(shí),將自動改變對應(yīng)的余額表!!!
'!!!因此調(diào)用了發(fā)生額表改變函數(shù)后,就不能再調(diào)用余額表改變函數(shù)!!!
'Public Function ChangeItemdblStockQuantity(strOP As String, lngActivityDetailID As Long) As Boolean
'
'Public Function ChangeItemDaily1(strOP As String, lngActivityDetailID As Long) As Boolean
' |
' ------ Public Function TransferItemBalance1(strOP As String, lngActivityDetailID As Long) As Boolean
'Public Function ChangeItemDaily2(strOP As String, lngActivityDetailID As Long) As Boolean
' |
' ------ Public Function TransferItemBalance2(strOP As String, lngActivityDetailID As Long) As Boolean
'Public Function ChangePositionDaily(strOP As String, lngActivityDetailID As Long) As Boolean
' |
' ------ Public Function TransferPositionBalance(strOP As String, lngActivityDetailID) As Boolean
'第3類:數(shù)據(jù)不從數(shù)據(jù)庫(ItemActivityDetail)中獲得,數(shù)據(jù)由用戶自己設(shè)置后改變余額表(或發(fā)生額表)-- 每個(gè)表單獨(dú)處理
'(第二類接口被第一類接口從程序內(nèi)部調(diào)用)
'Public Function NewItemDaily1(strDate As String, lngItemID As Long, lngCustomerID As Long, arrField() As String, arrValue() As Double) As Boolean
'Public Function NewItemDaily2(strDate As String, lngItemID As Long, arrField() As String, arrValue() As Double) As Boolean
'Public Function NewItemBalance1(intYear As Integer, lngItemID As Long, lngCustomerID As Long, arrField() As String, arrValue() As Double, arrField_InitChange() As String, arrValue_InitChange() As Double) As Boolean
'Public Function NewItemBalance2(intYear As Integer, lngItemID As Long, arrField() As String, arrValue() As Double, arrField_InitChange() As String, arrValue_InitChange() As Double) As Boolean
'Public Function NewPositionDaily(strDate As String, lngItemID As Long, lngPositionID As Long, arrField() As String, arrValue() As Double) As Boolean
'Public Function NewPositionBalance(intYear As Integer, lngItemID As Long, lngPositionID As Long, arrField() As String, arrValue() As Double, StockQuantity As Double) As Boolean
'刪除ItemBalance1,ItemBalance2,ItemDaily1,ItemDaily2,PositionBalance,PositionDaily 中的數(shù)據(jù)
'《一類接口》
'該參數(shù)默認(rèn)值為0表示不調(diào)用與余額有關(guān)的函數(shù),非0則相反
Public Function ChangeAllItem_from_Activity(strOP As String, lngActivityID As Long, Optional FromStartPeriod As Integer = 0) As Boolean
Dim SqlStr As String
Dim TmpQ As New rdoQuery
Dim rec As Boolean
On Error GoTo EndProc
SqlStr = "{ ? = CALL " & gclsBase.UID & ".ChangeAllItem_from_Activity( '" & strOP & "', " & lngActivityID & "," & FromStartPeriod & ") } "
Set TmpQ.ActiveConnection = gclsBase.BaseDB
TmpQ.SQL = SqlStr
TmpQ(0).Type = rdTypeNUMERIC
TmpQ(0).Direction = rdParamReturnValue
TmpQ.Execute
rec = IIf(TmpQ(0).Value = 0, True, False)
EndProc:
Set TmpQ = Nothing
ChangeAllItem_from_Activity = rec
End Function
'*********************************************************************************************************************************************************************
' * PositionDaily *
'*********************************************************************************************************************************************************************
'《接口》
Public Function ChangePositionDaily(strOP As String, lngActivityDetailID As Long) As Boolean
Dim SqlStr As String
Dim TmpQ As New rdoQuery
Dim rec As Boolean
On Error GoTo EndProc
SqlStr = "{ ? = CALL " & gclsBase.UID & ".ChangePositionDaily( '" & strOP & "', " & lngActivityDetailID & ") } "
Set TmpQ.ActiveConnection = gclsBase.BaseDB
TmpQ.SQL = SqlStr
TmpQ(0).Type = rdTypeNUMERIC
TmpQ(0).Direction = rdParamReturnValue
TmpQ.Execute
rec = IIf(TmpQ(0).Value = 0, True, False)
EndProc:
Set TmpQ = Nothing
ChangePositionDaily = rec
End Function
'************************************************************************************************************************
' * Item *
'************************************************************************************************************************
'改變Item中的庫存量:Item.dblStockQuantity
'注意:只有具有“存貨”類性質(zhì)的,才改變
Public Function ChangeItemdblStockQuantity(strOP As String, lngActivityDetailID As Long) As Boolean
Dim SqlStr As String
Dim TmpQ As New rdoQuery
Dim rec As Boolean
On Error GoTo EndProc
SqlStr = "{ ? = CALL " & gclsBase.UID & ".ChangeItemdblStockQuantity( '" & strOP & "', " & lngActivityDetailID & ") } "
Set TmpQ.ActiveConnection = gclsBase.BaseDB
TmpQ.SQL = SqlStr
TmpQ(0).Type = rdTypeNUMERIC
TmpQ(0).Direction = rdParamReturnValue
TmpQ.Execute
rec = IIf(TmpQ(0).Value = 0, True, False)
EndProc:
Set TmpQ = Nothing
ChangeItemdblStockQuantity = rec
End Function
'************************************************************************************************************************
' * PositionItemDetail *
'************************************************************************************************************************
'刪除貨位商品批次明細(xì)表中的出貨類型
Public Function DeletePositionItemDetail_OUT(lngActivityID As Long) As Integer
Dim SqlStr As String
Dim TmpQ As New rdoQuery
Dim rec As Integer
On Error GoTo EndProc
SqlStr = "{ ? = CALL " & gclsBase.UID & ".DeletePositionItemDetail_OUT( " & lngActivityID & ") } "
Set TmpQ.ActiveConnection = gclsBase.BaseDB
TmpQ.SQL = SqlStr
TmpQ(0).Type = rdTypeNUMERIC
TmpQ(0).Direction = rdParamReturnValue
TmpQ.Execute
rec = TmpQ(0).Value
EndProc:
Set TmpQ = Nothing
DeletePositionItemDetail_OUT = rec
End Function
'************************************************************************************************************************
' 其他公用函數(shù)
' **************************************
' * ItemActivity & ItemActivityDetail *
' **************************************
'判斷是否生成憑證
Public Function IsVoucher_ItemActivity(lngActivityID As Long, Optional ByRef strVoucher As String) As Integer
Dim SqlStr As String
Dim TmpQ As New rdoQuery
Dim rec As Integer
On Error GoTo EndProc
SqlStr = "{ ? = CALL " & gclsBase.UID & ".IsVoucher_ItemActivity( ? , ? ) } "
Set TmpQ.ActiveConnection = gclsBase.BaseDB
TmpQ.SQL = SqlStr
TmpQ(0).Type = rdTypeNUMERIC
TmpQ(0).Direction = rdParamReturnValue
TmpQ(1).Type = rdTypeNUMERIC
TmpQ(1).Direction = rdParamInput
TmpQ(1).Value = lngActivityID
TmpQ(2).Type = rdTypeVARCHAR
TmpQ(2).Direction = rdParamOutput
TmpQ.Execute
If TmpQ(0).Value = 2 Then
rec = -1
Else
strVoucher = IIf(IsNull(TmpQ(2).Value), "", TmpQ(2).Value)
rec = TmpQ(0).Value
End If
EndProc:
Set TmpQ = Nothing
IsVoucher_ItemActivity = rec
End Function
'刪除ItemActivity 和 ItemActivityDetail
Public Function DeleteItemActivityANDItemActivityDetail(lngActivityID As Long) As Integer
Dim SqlStr As String
Dim TmpQ As New rdoQuery
Dim rec As Integer
On Error GoTo EndProc
SqlStr = "{ ? = CALL " & gclsBase.UID & ".DelItemActANDItemActDetail( " & lngActivityID & ") } "
Set TmpQ.ActiveConnection = gclsBase.BaseDB
TmpQ.SQL = SqlStr
TmpQ(0).Type = rdTypeNUMERIC
TmpQ(0).Direction = rdParamReturnValue
TmpQ.Execute
rec = TmpQ(0).Value
EndProc:
Set TmpQ = Nothing
If rec <> 0 Then
DeleteItemActivityANDItemActivityDetail = -1
Else
DeleteItemActivityANDItemActivityDetail = rec
End If
End Function
' *********************************
' * 對照表 *
' *********************************
'刪除某張單據(jù)時(shí),同時(shí)處理與本單據(jù)相關(guān)的對應(yīng)業(yè)務(wù)類型的記錄
'這里,刪除的是使用記錄(ItemActivityDeltail_Del) 改變的是源記錄(ItemActivityDetail)
Public Function DeleteRelation(lngActivityID As Long, ByVal lngActivityTypeID As Long, Optional ByVal hWnd As Long = 0) As Integer
Dim SqlStr As String
Dim TmpQ As New rdoQuery
Dim rec As Integer
On Error GoTo EndProc
SqlStr = "{ ? = CALL " & gclsBase.UID & ".DeleteRelation( " & lngActivityID & ", " & lngActivityTypeID & ") } "
Set TmpQ.ActiveConnection = gclsBase.BaseDB
TmpQ.SQL = SqlStr
TmpQ(0).Type = rdTypeNUMERIC
TmpQ(0).Direction = rdParamReturnValue
TmpQ.Execute
rec = IIf(TmpQ(0).Value = 0, 1, -1)
EndProc:
Set TmpQ = Nothing
DeleteRelation = rec
End Function
'修改某張單據(jù)時(shí),同時(shí)處理與本單據(jù)相關(guān)的對應(yīng)業(yè)務(wù)類型的記錄
'這里,修改的是使用記錄(ItemActivityDeltail_Del) 改變的是源記錄(ItemActivityDetail)
Public Function ModifyRelation(ByVal lngActivityID As Long, ByVal lngReceiptTypeID As Long, Optional ByVal blnAdd As Boolean = True, Optional ByVal lnghWnd As Long = 0) As Integer
Dim SqlStr As String
Dim TmpQ As New rdoQuery
Dim rec As Integer
On Error GoTo EndProc
lnghWnd = 0
SqlStr = "{ ? = CALL " & gclsBase.UID & ".ModifyRelation( " & lngActivityID & ", " & lngReceiptTypeID & ", " & IIf(blnAdd, 1, 0) & ", " & lnghWnd & ") } "
Set TmpQ.ActiveConnection = gclsBase.BaseDB
TmpQ.SQL = SqlStr
TmpQ(0).Type = rdTypeNUMERIC
TmpQ(0).Direction = rdParamReturnValue
TmpQ.Execute
rec = IIf(TmpQ(0).Value = 0, 1, -1)
EndProc:
Set TmpQ = Nothing
ModifyRelation = rec
End Function
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -