DataReport1.Sections("Section1").Controls("Text1").DataField = "26"
.....
do until rs.eof
Если линия 29 то
for each столбец in твой_набор_записей.fields
if val(столбец.name)>=25 and val(столбец.name)<36 then
выводишь в отчет или в грид
end if
next столбец
end if
.....
rs.movenext
loop
Либо если градация большая, то запросом вынимаешь для каждой линии верхний и нижний пределы.
Как вариант, может и медленно будет, попробуй...
Public Sub T()
Dim r As New ADODB.Recordset, rr As New ADODB.Recordset, _
i As Long, j As Long, k As Long, kk As Long, ks As Long
r.Open "SELECT L.f_Article, L.f_Name, L.f_Min, L.f_Max, O.* FROM t_Line L INNER JOIN t_Operations O ON L.f_Counter=O.f_Line " _
& "WHERE f_Date=#5/13/2005# " _
& "ORDER BY 1, 2", CurrentProject.AccessConnection, adOpenStatic, adLockReadOnly
With rr.Fields
.Append "Article", r(0).Type, r(0).DefinedSize, adFldUnknownUpdatable
.Append "Name", r(1).Type, r(1).DefinedSize, adFldUnknownUpdatable
For i = 1 To 21
.Append "N" & i, adInteger, , adFldUnknownUpdatable
Next i
.Append "S", adInteger, , adFldUnknownUpdatable
End With
rr.Open
Do Until r.EOF
j = 0
rr.AddNew
rr(0) = r(0)
rr(1) = r(1)
k = r!f_Max - r!f_Min + 1
If kk < k Then kk = k
For i = r!f_Min To r!f_Max
j = j + 1
rr("N" & j) = i
Next i
rr.Update
rr.AddNew: j = 0: ks = 0
For i = r!f_Min To r!f_Max
j = j + 1
k = r(CStr(i))
rr("N" & j) = k
ks = ks + k
Next i
rr!S = ks
rr.Update
r.MoveNext
Loop
If Not rr.EOF Then
rr.MoveFirst
Do Until rr.EOF
Debug.Print rr(0), rr(1)
For k = 1 To kk
Debug.Print rr("N" & k);
Next k
Debug.Print rr!S
rr.MoveNext
Loop
End If
End Sub
Sirik писал(а):ещё раз:
мне нужен отчёт вот такого вида
r.Open "SELECT L.f_Article, L.f_Name, L.f_Min, L.f_Max, O.* FROM t_Line L INNER JOIN t_Operations O ON L.f_Counter=O.f_Line " & " ORDER BY 1, 2"
Сейчас этот форум просматривают: SemrushBot и гости: 164