请教MSHFlexGrid显示层叠结果不正常有问题

hangjier 2014-09-17 03:25:15
我用SHAPE 做SQL查询后得到的返回数据,用MSHFlexGrid显示时,想设置列表头时,出现以下两种情况,请有没有高手帮忙解释一下,有没有办法解决。谢谢!
(1)是不是用SHAPE查询的结果,实际是两个表,不可以一起放入一个MSHFlexGrid中?
(2)出现下际超限是什么原因?
(3)我用字符串只对第一个查询时设置表头是可以的,但是超过第一个表,到第二个表时,就会出现空白行,再出现第二个表的列。为什么 ??
以上是不是主要原因出现在SQL的查询中。请高手多指教 。谢谢!



‘代码如下
Option Explicit

' 声明ADODB.Connection和ADODB.Recordset对象变量
Dim conn As ADODB.Connection
Dim rs As New ADODB.Recordset

Private Sub Command1_Click()
Dim s As String
Dim sql As String
' 实例化Connection 对象
Set conn = New ADODB.Connection
' 设置连接提供者名称
conn.Provider = "MSDataShape"
' 设置连接字符串
conn.ConnectionString = "Provider=MSDataShape;Data Source=D:\Personal\Desktop\SQL\例子\MSHFlexGrid VB 层次结构\Nwind.mdb; Data Provider=Microsoft.Jet.OLEDB.4.0"
' 打开到数据源的连接
conn.Open
'shape指令
sql = "SHAPE {SELECT distinct orderID FROM Orders} AS Orders " + _
"APPEND ({SELECT * FROM [Order Details]} AS detail " + _
"RELATE 'OrderID' TO 'OrderID') AS detail"
' 在分级 Recordset对象中当父行位置更改时,对基本子记录的引用是也更改。
rs.StayInSync = True
' 打开游标
rs.Open sql, conn
' 设置MSHFlexGrid控件数据源
Set MSHFlexGrid1.DataSource = rs

' With MSHFlexGrid1
' .TextMatrix(0, 1) = "列表头1"
' .TextMatrix(0, 5) = "列表头5" '出错
' End With


s$ = "^ |^商品名称 |^规格 |^单位 |^数量 " '会留有空行
MSHFlexGrid1.FormatString = s$

rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing


End Sub


...全文
778 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊孩子开学喽 2014-12-09
  • 打赏
  • 举报
回复
引用 1 楼 Tiger_Zhao 的回复:
最简单的方法是在SQL中给每个字段一个别名,不就有列头了。
略微复杂点的办法是把表头称放在字段的备注信息里面, 然后通过读取备注信息来获取. 不过好处是将来维护起来方便
Tiger_Zhao 2014-09-17
  • 打赏
  • 举报
回复
最简单的方法是在SQL中给每个字段一个别名,不就有列头了。

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧