Office中国论坛/Access中国论坛
标题:
从某班级中取3人按矮中高排列变成表2,把所有的排列组合都弄出来
[打印本页]
作者:
bfwz
时间:
2015-12-30 08:02
标题:
从某班级中取3人按矮中高排列变成表2,把所有的排列组合都弄出来
我把问题形象化,表1是一个班级同学的身高,从矮到高。想从中取3人按矮中高分别写入字段(身高矮、身高中、身高高)的每行中变成表2(只要每行字段1中的身高矮、字段2中、字段3高即可,不与其他行对比),把所有的排列组合都弄出来。
表1
身高
A1
A2
...
An
如果班级有5人,则
表2
身高矮 身高中 身高高
A1 A2 A3
A1 A2 A4
A1 A2 A5
A1 A3 A4
A1 A3 A5
A1 A4 A5
A2 A3 A4
A2 A3 A5
A2 A4 A5
A3 A4 A5
B1 B2 B3
如果班级有n人,
则字段1范围是Ai,i=1到n-2
则字段2范围是Aj,j=i+1到n-1
则字段3范围是Ak,k=j+1到n
进一步,
Ai是A班同学身高,Bi是B班同学身高,Ci是C班同学身高,
按照上述排法,怎样把表1变成表2
谢谢!
表1
身高 班级
A1 A班
A2 A班
A3 A班
A4 A班
A5 A班
B1 B班
B2 B班
B3 B班
C1 C班
C2 C班
C3 C班
C4 C班
C5 C班
C6 C班
表2
身高矮 身高中 身高高 班级
A1 A2 A3 A班
A1 A2 A4 A班
A1 A2 A5 A班
A1 A3 A4 A班
A1 A3 A5 A班
A1 A4 A5 A班
A2 A3 A4 A班
A2 A3 A5 A班
A2 A4 A5 A班
A3 A4 A5 A班
B1 B2 B3 B班
C1 C2 C3 C班
C1 C2 C4 C班
C1 C2 C5 C班
C1 C2 C6 C班
C1 C3 C4 C班
C1 C3 C5 C班
C1 C3 C6 C班
C1 C4 C5 C班
C1 C4 C6 C班
C1 C5 C6 C班
C2 C3 C4 C班
C2 C3 C5 C班
C2 C3 C6 C班
C2 C4 C5 C班
C2 C4 C6 C班
C2 C5 C6 C班
C3 C4 C5 C班
C3 C4 C6 C班
C3 C5 C6 C班
C4 C5 C6 C班
作者:
roych
时间:
2015-12-30 14:14
'执行代码前先引用Microsoft ActiveX Data Object 2.8 Library
Sub test()
Dim rst1 As New ADODB.Recordset
Dim rst2 As New ADODB.Recordset
Dim rst3 As New ADODB.Recordset
Dim i As Long, j As Long, k As Long
Dim Arr
rst1.Open "select distinct 班级 from 测试数据", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Do Until rst1.EOF
rst2.Open "select 姓名 from 测试数据 where 班级='" & rst1(0) & "'", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rst3.Open "结果表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Arr = rst2.GetRows()
For i = 0 To UBound(Arr, 2)
For j = i + 1 To UBound(Arr, 2)
For k = j + 1 To UBound(Arr, 2)
rst3.AddNew
rst3(0) = Arr(0, i)
rst3(1) = Arr(0, j)
rst3(2) = Arr(0, k)
rst3(3) = rst1(0)
Next
Next
Next
rst3.UpdateBatch
rst3.Close
rst2.Close
rst1.MoveNext
Loop
rst1.Close
End Sub
复制代码
附上2007版本附件,如果你的是2003的话,请新建一个模块,把上述代码贴上,在VBE界面下,按下F5执行即可。
[attach]57761[/attach]
作者:
bfwz
时间:
2015-12-30 22:14
谢谢版主答复。
结果非常好。
同样问题,Sql Server用查询解决了。
http://bbs.csdn.net/topics/391883340
我试着用查询在Access上实现,失败了。
请教版主,可否用查询在Access上实现?
作者:
roych
时间:
2015-12-31 10:46
bfwz 发表于 2015-12-30 22:14
谢谢版主答复。
结果非常好。
Access里没有递归查询,没法解决。
作者:
bfwz
时间:
2015-12-31 11:15
再次谢谢版主答复。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3