Добавление значений в поля Active Reports 6 для группировки - PullRequest
0 голосов
/ 31 октября 2018

В Активных отчетах 6 для платформы VB6 я пытаюсь сгруппировать данные для отображения под разными заголовками группы на основе логического столбца. данные поступают в активные отчеты через набор записей, который я инициализирую в методе FetchData. Я объявляю свои поля в методе активации. (это то, как я видел учебники, делающие это онлайн.) Я получаю сообщение об ошибке при попытке назначить столбец набора записей полю в методе выборки данных. (индекс вне диапазона.) приводит меня к мысли, что мне нужно специально обрабатывать итерации и нижние и верхние границы цикла, когда я это вижу. Я не слишком круто с VB6, но я попытался просто вставить «1» в поле, и это все еще дает эту ошибку, так что мне нужно циклически просматривать поля, а не набор записей? это мой код у меня в поле данных установлены соответствующие имена столбцов в меню свойств для каждого текстового поля в разделе сведений, а также я проверял это, и ничего не заполнялось. у меня есть поле данных заголовка группы, установленное для столбца, которое я хочу основать на наборе в свойствах, это тоже не сработало, поэтому я начал делать это программно, так как источник данных не установлен до времени выполнения.

Private Sub ActiveReport_Activate()
Fields.Add "fldLock"
Fields.Add "fldEquipment"
Fields.Add "fldBreaker"
Fields.Add "fldPotHazEner"
Fields.Add "ValveTxt"

GroupHeader1.DataField = "ValveLS"
GroupHeader1.GroupValue = "1"

GroupHeader2.DataField = "ValveLS"
GroupHeader2.GroupValue = "0"

End Sub

Private Sub ActiveReport_FetchData(eof As Boolean)
Dim hdrrs As adodb.Recordset

BuildSql
If SQLConn.connectToDatabase Then
   Set rs = SQLConn.openRS(sql, adUseClient, adOpenDynamic, adLockReadOnly)
End If

'Populate Header and Footer even if no detail records are found.
If PageHeader.Controls.item("fldSystem") = "" Then
    sql = "Select * From "
    sql = sql + "Lockout.dbo.LockoutSystemDB Left Outer Join "
    sql = sql + "HDData.dbo.tblUsers On RevisedByLA = USLanID "
    sql = sql + "Where SystemIDLA = " & SystemID & " "

    If SQLConn.connectToDatabase Then
        Set hdrrs = SQLConn.openRS(sql, adUseClient, adOpenDynamic, adLockReadOnly)
        If Not hdrrs.eof Then
            PageHeader.Controls.item("fldSystem") = hdrrs.Fields("SystemNameLA")
            PageHeader.Controls.item("fldProcComment") = hdrrs.Fields("ProcCommentLA")

            If hdrrs.Fields("CommentForeColor") = "Red" Then
                PageHeader.Controls.item("fldProcComment").ForeColor = vbRed
            Else
                PageHeader.Controls.item("fldProcComment").ForeColor = vbBlack
            End If

            PageFooter.Controls.item("fldPrintDate") = Now() & " by " & GetLanIDName(CURRENT_USER_LANID)
            PageFooter.Controls.item("fldRevisionDate") = hdrrs.Fields("RevisionDateLA") & " by " & Trim(hdrrs.Fields("USFName")) & " " & Trim(hdrrs.Fields("USLName"))
            PageFooter.Controls.item("fldLocks") = hdrrs.Fields("LocksLA")

        End If
        hdrrs.Close
        Set hdrrs = Nothing
    End If
End If


 If rs.eof Then Exit Sub
'  If rs.Fields("ValveLS") = True Then
'     GroupHeader1.Controls.item("ValveLockTxt") = rs.Fields("LockIDLS")
'     GroupHeader1.Controls.item("ValveProcTxt") = rs.Fields("StepDescriptionLS")
'     GroupHeader1.Controls.item("PotHazEnerValveTxt") = rs.Fields("TypePotHazEnergyLS")
'   End If

     If rs.Fields("LockIDLS") <> 0 Then

          'Fields.item("fldLock").value = Trim(rs.Fields("LockIDLS"))
          Fields("fldLock").value = Trim(rs.Fields("LockIDLS"))
         'Detail.Controls.item("fldLock") = rs.Fields("LockIDLS")
     Else
          Fields("fldLock").value = ""
         'Detail.Controls.item("fldLock") = ""
     End If
            Fields("fldEquipment").value = Trim(rs.Fields("StepDescriptionLS"))
            Fields("ValveTxt").value = Trim(rs.Fields("ValveLS"))
            'Detail.Controls.item("fldEquipment") = Trim(rs.Fields("StepDescriptionLS"))
            'Detail.Controls.item("ValveTxt") = rs.Fields("ValveLS")

     If Trim(rs.Fields("ForeColor")) = "Red" Then
            Detail.Controls.item("fldEquipment").ForeColor = vbRed
     ElseIf Trim(rs.Fields("ForeColor")) = "Blue" Then
            Detail.Controls.item("fldEquipment").ForeColor = vbBlue
     ElseIf Trim(rs.Fields("ForeColor")) = "Yellow" Then
            Detail.Controls.item("fldEquipment").ForeColor = vbYellow
     Else
            Detail.Controls.item("fldEquipment").ForeColor = vbBlack
     End If
     Fields("fldPotHazEner").value = Trim(rs.Fields("TypePotHazEnergyLS"))
     Fields("fldBreaker").value = Trim(rs.Fields("BreakerLS"))
     'Detail.Controls.item("fldPotHazEner") = Trim(rs.Fields("TypePotHazEnergyLS"))
     'Detail.Controls.item("fldBreaker") = Trim(rs.Fields("BreakerLS"))






rs.MoveNext
eof = False
End Sub
...