VB下访问Access数据库问题,请各位不吝赐教!

sanqsh 2002-07-26 01:25:05
我的问题是这样的:
有两张表ta、tb,结构分别是(当然这儿列出的字段没实际意思啦):
ta: 序号 int
姓名 文本
tb: 序号 自动编号
姓名 文本
属性 文本
tb中一个姓名对应多个属性。我现在的目标是:生成这样一个记录集(或数组等),包含两方面的内容:姓名和综合属性(指tb中对应于一个姓名的多个属性的字符串相加),并按ta中姓名的序号排序。
请问如何用最简单的方法实现?谢谢!
宁夏,李大苞,nxjyldb@163.com
...全文
60 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
feihong0233 2002-07-27
  • 打赏
  • 举报
回复
我给的是一个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 Explicit

Private rs As New ADODB.Recordset

Private 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
ba_saner 2002-07-27
  • 打赏
  • 举报
回复
select a.序号 ,b.姓名,(b.属性1+b.属性2) as 属性
from ta as a inner join tb as b
on a.序号 =b.序号
order by a.序号 asc
AiQun 2002-07-27
  • 打赏
  • 举报
回复
没有办法啦,只有一个个用记录相加吧.
sanqsh 2002-07-26
  • 打赏
  • 举报
回复
不好意思,水平太洼,看不太懂啊,能不能帮忙说得更详细一些?谢谢
feihong0233 2002-07-26
  • 打赏
  • 举报
回复
TRANSFORM SUM(iif([Attrib]<>'',1,0)) SELECT [td].[Name] FROM [td] GROUP BY [Name] PIVOT [Attrib]
sanqsh 2002-07-26
  • 打赏
  • 举报
回复
请各位高手帮帮忙!

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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