我用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