在蓝色理想看到了这样一个帖子:
http://bbs.blueidea.com/thread-2768623-1-1.html
他提出了一个问题,就是一个双实体以及其多对多关系的显示问题,原题如下:
一共三个表..
表一(student)
id name
1 A
2 B
3 C
表二(teacher)
id teachername
1 张三
2 李四
3 王五
表三(studenttoteacher)
id studentid teacherid
1 1 1
2 1 2
3 1 3
4 2 1
5 2 3
6 3 2
7 3 3
表三第一二三条记录表示的意思是学生ID为1的学生有三个老师 ID分别是1 2 3,依此类推
输入结果要求如下图..学生老师要求可以再添加
问题抽象其实是这样的
有三个表,分别是实体A、实体B以及两个实体之间的多对多关系,现在的需求是,显示一个html表格,要求在这个表格里面显示两实体之间各记录是否有对应的关系。并且这里面的实体,是可以动态的添加的。
而我的思路是这样的,首先取出两实体A、B的名称,同时获得其条目数,而后定义一个二维数组,用于以矩阵的形式存放二者的关系,而后再进行显示。
我给出的代码如下:
Option Explicit
Dim sConn,oConn,sSql,oRs,i,j
Dim aSet,lRowCount,lColCount,aStudents,aTeachers
Dim lLastID
sConn = " Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Server.MapPath( " source.mdb " )
Set oConn = Server.CreateObject( " ADODB.Connection " )
Set oRs = Server.CreateObject( " ADODB.RecordSet " )
oConn.Open sConn
' 学生部分记录
sSql = " SELECT * FROM [student] "
oRs.Open sSql,oConn, 1 , 1
lLastID = 0
While Not oRs.Eof
For i = 1 To (oRs( " id " ) - lLastID)
aStudents = aStudents &