如何用代码打开分层结构(关系型)的数据库,并将mshflexgrid绑定到分层结构的 Recordset使得mshflexgrid有两个带区。
Dim CnnN As New ADODB.Connection
Dim RstN As New ADODB.Recordset
CnnN.CursorLocation = adUseClient
CnnN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Dource=Product.mdb"
RstN.Open "Select * From 家庭状况", CnName, adOpenStatic, adLockOptimistic
Set MSHFlexGrid1.DataSource=RstN
这个表是关系型表,他有一个子表为“家庭成员”。我该如何写代码使得在mshflexgrid中有子表。也就是有两个带区。
Dim CnnN As New ADODB.Connection
Dim RstN As New ADODB.Recordset
CnnN.CursorLocation = adUseClient
CnnN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Dource=Product.mdb"
RstN.Open "Select * From 家庭状况", CnName, adOpenStatic, adLockOptimistic
Set MSHFlexGrid1.DataSource=RstN
这个表是关系型表,他有一个子表为“家庭成员”。我该如何写代码使得在mshflexgrid中有子表。也就是有两个带区。
用的是shape命令,这个是ADO特有的吧,好像是,不是标准的SELECT语句吧!
不要急,晚上给你
這樣的寫法靈活,不受制與綁定
隨便你怎麼寫sql
For q = 1 To rs1.PageSize
'顯示數據在控件中
With Form1.MSFlexGrid1
.Row = .Rows - 1
.Col = 0
.Text = rs1("store_no")
.Col = 1
.Text = IIf(IsNull(rs1("store1_no")), "", rs1("store1_no"))
.Col = 2
.Text = IIf(IsNull(rs1("store1_name")), "", rs1("store1_name"))
.Col = 3
.Text = IIf(IsNull(rs1("sto_stand")), "", rs1("sto_stand"))
.Col = 4
.Text = IIf(IsNull(rs1("sto_if1")), "", rs1("sto_if1"))
.Col = 5
.Text = IIf(IsNull(rs1("sto_if2")), "", rs1("sto_if2"))
.Col = 6
.Text = IIf(IsNull(rs1("sto_pfirst")), "", rs1("sto_pfirst"))
.Col = 7
.Text = IIf(IsNull(rs1("notes")), "", rs1("notes"))
.Col = 0
.Sort = 1
End With
' If Form1.MSFlexGrid1.Rows < 6 Then '把最后的空格去掉
Form1.MSFlexGrid1.Rows = Form1.MSFlexGrid1.Rows + 1
rs1.MoveNext
.text=rsl("store_no")什么意思呀?
改成
for i=1 to rs.RecordCount就可以了
.Col = 7
.Text = IIf(IsNull(rs1("notes")), "", rs1("notes"))
第i行,第8列格子裡面填入notes這個rs的數值
' 声明ADODB.Connection和ADODB.Recordset对象变量
Dim conn As ADODB.Connection
Dim rs As New ADODB.Recordset
Private Sub Command1_Click()
Dim sql As String
' 实例化Connection 对象
Set conn = New ADODB.Connection
' 设置连接提供者名称
conn.Provider = "MSDataShape"
' 设置连接字符串
conn.ConnectionString = "Provider=MSDataShape;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\Nwind.mdb; Data Provider=Microsoft.Jet.OLEDB.4.0"
' 打开到数据源的连接
conn.Open
'shape指令
sql = "SHAPE {SELECT * 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
End Sub
' 释放相应的资源
Private Sub Command2_Click()
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
End
End Sub
"RELATE 'OrderID' TO 'OrderID') AS detail"
中的order 哪个是父表哪 个是子表呀?能不能说明一下意思?
Order Details是子表
回了就给分。
一般都是主从表的