Я выполнял некоторые оценочные нормы для моей проектной работы. У меня есть Нормы и их детали, а также детали норм содержат поднормы и детали их норм.
Ниже приводится Норма Класса, которая содержит детали Нормы..
Public Class Norm
Public mNorm_id As String
Public mGroup_id As String
Public mActivity_id As String
Public mShortDesc As String
Public mFullDesc As String
Public mAnalysisUnit As String
Public mSpecs As String
Public mNormDetails As List(Of NormDetail)
End Class
Примечание: mNormDetails инициализируются и вставляются при первой инициализации класса Norm.
Public Class NormDetail
Public mNorms_id As String
Public mActivity_id As String
Public mInputQuantity As Double
Public mInputCode As String
Public mInputAppliesTo As String
End Class
Класс Norm содержит описание нормы и список подробностей нормы.(Это было бы ясно с приложенным листом Excel).Детали самой нормы тоже могут содержать норму.Мне нужно обрабатывать детали нормы и нормы одновременно, и если детали нормы содержат нормы, то мне снова нужно обработать норму и детали нормы, которые она содержит.
Вот класс BoqInfo, где у меня возникли проблемы.
Public Class clsBoqInfo
Public mActivityid As String
Public mNormid As String
Public mnormQuantity As String
Public mBoqQuantity As Double
Public mainnorm As Norm 'MainNorm
Public mnormdesc As String
Public normQty As Double = 1.0
Public mBoqDetails As New List(Of BoqDetail)
Public Sub New(ByVal NormId As String, ByVal ActivityId As String, ByVal boqQuantity As Double)
mNormid = NormId
mActivityid = ActivityId
mainnorm = New Norm(NormId, ActivityId)
mnormdesc = mainnorm.ShortDesc
mnormQuantity = mainnorm.AnalysisQuantity 'Main norm Analysis Quantity
mBoqQuantity = boqQuantity
End Sub
Public Sub Analyze()
TryAddBoqDetail()
End Sub
Private Sub TryAddBoqDetail(Optional normx As Norm = Nothing)
normQty = mainnorm.NormDetails(0).InputQuantity
If normx IsNot Nothing Then
mainnorm = normx
End If
Dim normDetails As New List(Of NormDetail)
normDetails = mainnorm.NormDetails
For Each normd As NormDetail In normDetails
Dim objboqdetail As BoqDetail = Nothing
Dim inputcode As String = normd.InputCode.Trim
Dim Identifier As String = Mid(inputcode, 1, 1)
inQuantity = normd.InputQuantity
Select Case Identifier
Case "L", "M", "F", "E" 'Labour,Material,Fitting,Equipment
objboqdetail = New BoqDetail With {
.activityid = mainnorm.Activity_id,
.normid = mainnorm.Norm_id,
.normdesc = mainnorm.ShortDesc,
.itemcode = inputcode,
.quantity = mBoqQuantity * normQty * inQuantity / Me.Quantity,
.rate = Project.getRate(inputcode)
}
Case "N" 'Norms Item
Dim childnormidentifier As String = Mid(inputcode, 2)
Dim newnorm As Norm = New Norm("N-102", childnormidentifier)
TryAddBoqDetail(newnorm)
End Select
If objboqdetail IsNot Nothing Then
mBoqDetails.Add(objboqdetail)
End If
Next
End Sub
в методе TryAddBoqDetail, мне нужно получить норму ввода норм для детали и обработать ее детали.Как решить эту проблему, пожалуйста, помогите. Лист Excel, объясняющий проблему
Решено с помощью.'Private Sub AddBoqDetail (Необязательный normx As clsBoqInfo = Nothing) Если normx IsNot Nothing, то mainnorm = normx.mainnorm mnormAnalysisQuantity = mainnorm.Dim objboqdetail As BoqDetail = Nothing Dim inputcode As String = normd.InputCode.Trim Dim Identifier As String = Mid (inputcode, 1, 1) inQuantity = normd.InputQuantity Выбрать регистр идентификатора Case "L", "M", "F","E" 'Труд, Материал, Подгонка, Оборудование objboqdetail = Новый BoqDetail С {.activityid = mainnorm.Activity_id, .normid = mainnorm.Norm_id, .normdesc = mainnorm.ShortDesc, .itemcode = inputcode, .quantity = mBoqQuantity * norminQuantity / Me.Quantity, .rate = Project.getRate (inputcode)} Регистр "N" 'Элемент Dim Элемент Dim childnormidentifier As String = Mid (inputcode, 2) normQty = normd.InputQuantity Dim newnorm As clsBoqInfo = Новый clsBoqInfo ("N-102 ", childnormidentifier, mBoqQuantity) AddBoqDetail (newnorm) End Select, если objboqdetail IsNot Nothing, затем mBoqDetails.Add (objboqdetail) End If Next End Sub '