上次的那个程序只能显示10列,插入删除后就不能全部显示,我改了一下,用count(线路名) 来统计每一个线路的站点数,然

上次的那个程序只能显示10列,插入删除后就不能全部显示,我改了一下,用count(线路名) 来统计每一个线路的站点数,然后循环输出,不能显示!这个num1应该是inrow+1后的变值啊,
strSql = "select 线路名,站点,排序,count(线路名) as num1 from 公交线路 group by 线路名 ,站点,排序 order by 线路名 asc,排序 asc "
Set rst = Query(strSql)
While Not rst.EOF()
MSFlexGrid1.Rows = intRow + 1
MSFlexGrid1.RowHeight(intRow) = 400
MSFlexGrid1.Row = intRow
If intRow Mod 2 = 1 Then
For k = 0 To 10
MSFlexGrid1.Col = k
MSFlexGrid1.CellBackColor = &HFFFFC0
Next k
Else
For k = 0 To 10
MSFlexGrid1.Col = k
MSFlexGrid1.CellBackColor = &HC0E0FF
Next k
End If
MSFlexGrid1.TextMatrix(intRow,0) = rst.Fields(0)
For j = 1 To num1
MSFlexGrid1.TextMatrix(intRow,j) = rst.Fields(1)
rst.MoveNext
Next j
intRow = intRow + 1
Wend
ruinruin 1年前 已收到1个回答 举报

ahlx123 幼苗

共回答了11个问题采纳率:72.7% 举报

如果select语句中包含了count...group, 那么输出的结果应该仅为统计值.
方案一:看看能否将这两个动作分开. 先用count...group取得num1, 然后再用select把细节显示出来
方案二select中不含"count...group", 在循环中增加两个变量存当前线路名及上一个记录的线路名(如curLine, oldLine), 那么一旦发现curLineoldLine时就换行, 同时set oldLine=curLine.
大致写了一下, 未经验证, 可能有bug, 仅供参考:
Dim curLine as string, oldLine as string

strSql = "select 线路名,站点,排序 from 公交线路 order by 线路名 asc,排序 asc "

Set rst = Query(strSql)
oldLine = ""
While Not rst.EOF()
curLine = rst.Fields(0)
if (curLine oldLine) then '应该换新行
MSFlexGrid1.Rows = intRow + 1
MSFlexGrid1.RowHeight(intRow) = 400
MSFlexGrid1.Row = intRow
If intRow Mod 2 = 1 Then
For k = 0 To 10
MSFlexGrid1.Col = k
MSFlexGrid1.CellBackColor = &HFFFFC0
Next k
Else
For k = 0 To 10
MSFlexGrid1.Col = k
MSFlexGrid1.CellBackColor = &HC0E0FF
Next k
End If
curLine = rst.Fields(0)
MSFlexGrid1.TextMatrix(intRow, 0) = curLine
oldLine = curLine
intRow = intRow + 1
j = 1 '初试化列号
else '同一线路, 输出各列
MSFlexGrid1.TextMatrix(intRow, j) = rst.Fields(1)
j = j + 1
end if
rst.MoveNext
Wend

1年前

10
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 2.998 s. - webmaster@yulucn.com