166 lines
4.5 KiB
OpenEdge ABL
166 lines
4.5 KiB
OpenEdge ABL
VERSION 1.0 CLASS
|
|
BEGIN
|
|
MultiUse = -1 'True
|
|
END
|
|
Attribute VB_Name = "IteratorLinkAll"
|
|
Attribute VB_GlobalNameSpace = False
|
|
Attribute VB_Creatable = False
|
|
Attribute VB_PredeclaredId = False
|
|
Attribute VB_Exposed = False
|
|
Option Explicit
|
|
|
|
Private row_ As Long
|
|
Private sheet_ As Excel.Worksheet
|
|
Private db_ As InfoDatabase
|
|
|
|
Public Sub Init(db As InfoDatabase, linkSheet As Excel.Worksheet, Optional nRow& = HT03_DEFAULT_FIRST_LINE)
|
|
Set db_ = db
|
|
Set sheet_ = linkSheet
|
|
row_ = nRow
|
|
End Sub
|
|
|
|
Public Function Increment(Optional nStep& = 1) As Boolean
|
|
Increment = row_ + nStep >= 0
|
|
If Increment Then _
|
|
row_ = row_ + nStep
|
|
End Function
|
|
|
|
Public Function GoFirst()
|
|
row_ = HT03_DEFAULT_FIRST_LINE
|
|
End Function
|
|
|
|
Public Function GoLast()
|
|
row_ = sheet_.Columns(S_L_FROM_ID).Find(vbNullString, LookAt:=xlWhole).Row - 1
|
|
If row_ < HT03_DEFAULT_FIRST_LINE Then _
|
|
row_ = HT03_DEFAULT_FIRST_LINE
|
|
End Function
|
|
|
|
Public Function GotoInsertion()
|
|
row_ = sheet_.Columns(S_L_FROM_ID).Find(vbNullString, LookAt:=xlWhole).Row
|
|
End Function
|
|
|
|
Public Function IsDone() As Boolean
|
|
IsDone = sheet_.Cells(row_, LinkStruct.S_L_TO_ID) = vbNullString
|
|
End Function
|
|
|
|
Public Function RemoveRow()
|
|
Call sheet_.Rows(row_).Delete
|
|
End Function
|
|
|
|
Public Function Find(target$, colN As LinkStruct) As Boolean
|
|
Dim foundRng As Excel.Range
|
|
Set foundRng = sheet_.Columns(colN).Find(target, LookAt:=xlWhole)
|
|
If foundRng Is Nothing Then
|
|
row_ = HT03_INVALID_ROW
|
|
Find = False
|
|
Else
|
|
row_ = foundRng.Row
|
|
Find = True
|
|
End If
|
|
Set foundRng = sheet_.Columns(colN).Find("", LookAt:=xlPart)
|
|
End Function
|
|
|
|
Public Function IsProcessed() As Boolean
|
|
IsProcessed = True
|
|
If Status = T_LINKS_IGNORE Then _
|
|
Exit Function
|
|
|
|
Dim nDestination&: nDestination = DestinationID
|
|
Dim destStatus As TLawStatus: destStatus = db_.GetLawStatus(nDestination)
|
|
If destStatus = T_LAWS_IGNORE Then _
|
|
Exit Function
|
|
|
|
Dim nSource&: nSource = SourceID
|
|
Dim sourceStatus As TLawStatus: sourceStatus = db_.Cache(nSource).status_
|
|
If sourceStatus = T_LAWS_OUTER Or _
|
|
(sourceStatus = T_LAWS_FRINGE And destStatus = T_LAWS_NOTDEFINED) Then _
|
|
Exit Function
|
|
|
|
IsProcessed = LType <> T_LINK_DEFAULT And db_.Contains(nDestination)
|
|
If Not IsProcessed And nSource = nDestination Then _
|
|
IsProcessed = Row = db_.Cache(nSource).linkBase_
|
|
End Function
|
|
|
|
Public Function IsActive() As Boolean
|
|
IsActive = False
|
|
If Status = T_LINKS_IGNORE Or LType = T_LINK_DEFAULT Then _
|
|
Exit Function
|
|
|
|
If Not db_.Contains(DestinationID) Or Not db_.Contains(SourceID) Then _
|
|
Exit Function
|
|
|
|
Dim targetStatus As TLawStatus: targetStatus = db_.GetLawStatus(DestinationID)
|
|
If targetStatus = T_LAWS_IGNORE Then _
|
|
Exit Function
|
|
|
|
Dim sourceStatus As TLawStatus: sourceStatus = db_.Cache(SourceID).status_
|
|
If sourceStatus = T_LAWS_OUTER Or sourceStatus = T_LAWS_IGNORE Or _
|
|
(sourceStatus = T_LAWS_FRINGE And targetStatus = T_LAWS_NOTDEFINED) Then _
|
|
Exit Function
|
|
|
|
IsActive = True
|
|
End Function
|
|
|
|
Public Function ImportData(src As Object)
|
|
SourceID = src.SourceID
|
|
SourceSub = src.SourceSub
|
|
DestinationID = src.DestinationID
|
|
DestinationSub = src.DestinationSub
|
|
LType = src.LType
|
|
Status = src.Status
|
|
End Function
|
|
|
|
'===== Let =====
|
|
Public Property Let DestinationID(nID&)
|
|
sheet_.Cells(row_, LinkStruct.S_L_TO_ID) = nID
|
|
End Property
|
|
|
|
Public Property Let Status(nStat As TLinkStatus)
|
|
sheet_.Cells(row_, LinkStruct.S_L_STATUS) = nStat
|
|
End Property
|
|
|
|
Public Property Let LType(nType As TLinkType)
|
|
sheet_.Cells(row_, LinkStruct.S_L_TYPE) = nType
|
|
End Property
|
|
|
|
Public Property Let SourceID(nID&)
|
|
sheet_.Cells(row_, LinkStruct.S_L_FROM_ID) = nID
|
|
End Property
|
|
|
|
Public Property Let DestinationSub(nSub$)
|
|
sheet_.Cells(row_, LinkStruct.S_L_TO_SUB) = nSub
|
|
End Property
|
|
|
|
Public Property Let SourceSub(nSub$)
|
|
sheet_.Cells(row_, LinkStruct.S_L_FROM_SUB) = nSub
|
|
End Property
|
|
|
|
'===== Get =====
|
|
Public Property Get Row() As Long
|
|
Row = row_
|
|
End Property
|
|
|
|
Public Property Get DestinationID() As Long
|
|
DestinationID = CLng(sheet_.Cells(row_, LinkStruct.S_L_TO_ID))
|
|
End Property
|
|
|
|
Public Property Get DestinationSub() As String
|
|
DestinationSub = sheet_.Cells(row_, LinkStruct.S_L_TO_SUB)
|
|
End Property
|
|
|
|
Public Property Get SourceID() As Long
|
|
SourceID = CLng(sheet_.Cells(row_, LinkStruct.S_L_FROM_ID))
|
|
End Property
|
|
|
|
Public Property Get SourceSub() As String
|
|
SourceSub = sheet_.Cells(row_, LinkStruct.S_L_FROM_SUB)
|
|
End Property
|
|
|
|
Public Property Get Status() As TLinkStatus
|
|
Status = CInt(sheet_.Cells(row_, LinkStruct.S_L_STATUS))
|
|
End Property
|
|
|
|
Public Property Get LType() As TLinkType
|
|
LType = CInt(sheet_.Cells(row_, LinkStruct.S_L_TYPE))
|
|
End Property
|