select a.序号 ,b.姓名,(b.属性1+b.属性2) as 属性 from ta as a inner join tb as b on a.序号 =b.序号 order by a.序号 asc
我给的是一个SQL啊, 用它打开表就行了, 但是它没有ID项。这个查询适合你的属性就是几种的情况, 如果你的每条记录的属性都不一样这样用就不好了。 这格查询查完了得到的表是由下面的列组成: Name 属性1 属性2 属性3 ……如果谁有那项属性相应的列的值就是1 当然你需要使用的是VB的数据控件, 或和ADO使用Access的驱动。不知道这样说明白了些么? 给你一个代码试试吧。 希望我的理解算是正确的。 假设你的tb的字段是ID Name Attrib 数据库存储在G:\b.mdb 你安装了Access2000,所以使用ODBC的MS Access Database驱动。 窗体上有一个DataGrid控件,而且引用了Ado2.1 仍然强调一下,这样只适用属性有限的情况。 '----------------------------------------- Option ExplicitPrivate rs As New ADODB.RecordsetPrivate Sub Form_Load() rs.CursorLocation = adUseClient rs.Open "TRANSFORM SUM(iif([Attrib]<>'',1,0)) SELECT [td].[Name] FROM [td] GROUP BY [Name] PIVOT [Attrib]", "DSN=MS Access Database;DBQ=g:\b.mdb"
Set DataGrid1.DataSource = rs Dim l As Long For l = 0 To DataGrid1.Columns.Count - 1 If l = 0 Then DataGrid1.Columns(l).Width = 1000 Else DataGrid1.Columns(l).Width = 500 DataGrid1.Columns(l).Alignment = dbgCenter End If Next l
from ta as a inner join tb as b
on a.序号 =b.序号
order by a.序号 asc
用它打开表就行了,
但是它没有ID项。这个查询适合你的属性就是几种的情况,
如果你的每条记录的属性都不一样这样用就不好了。
这格查询查完了得到的表是由下面的列组成:
Name 属性1 属性2 属性3 ……如果谁有那项属性相应的列的值就是1
当然你需要使用的是VB的数据控件,
或和ADO使用Access的驱动。不知道这样说明白了些么?
给你一个代码试试吧。
希望我的理解算是正确的。
假设你的tb的字段是ID Name Attrib
数据库存储在G:\b.mdb
你安装了Access2000,所以使用ODBC的MS Access Database驱动。
窗体上有一个DataGrid控件,而且引用了Ado2.1
仍然强调一下,这样只适用属性有限的情况。
'-----------------------------------------
Option ExplicitPrivate rs As New ADODB.RecordsetPrivate Sub Form_Load() rs.CursorLocation = adUseClient
rs.Open "TRANSFORM SUM(iif([Attrib]<>'',1,0)) SELECT [td].[Name] FROM [td] GROUP BY [Name] PIVOT [Attrib]", "DSN=MS Access Database;DBQ=g:\b.mdb"
Set DataGrid1.DataSource = rs
Dim l As Long
For l = 0 To DataGrid1.Columns.Count - 1
If l = 0 Then
DataGrid1.Columns(l).Width = 1000
Else
DataGrid1.Columns(l).Width = 500
DataGrid1.Columns(l).Alignment = dbgCenter
End If
Next l
End Sub