В Активных отчетах 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