设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1983|回复: 4
打印 上一主题 下一主题

[查询] 从某班级中取3人按矮中高排列变成表2,把所有的排列组合都弄出来

[复制链接]
1#
发表于 2015-12-30 14:14:16 | 显示全部楼层
'执行代码前先引用Microsoft ActiveX Data Object  2.8 Library
  1. Sub test()
  2.     Dim rst1 As New ADODB.Recordset
  3.     Dim rst2 As New ADODB.Recordset
  4.     Dim rst3 As New ADODB.Recordset
  5.     Dim i As Long, j As Long, k As Long
  6.     Dim Arr
  7.     rst1.Open "select distinct 班级 from 测试数据", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  8.     Do Until rst1.EOF
  9.         rst2.Open "select 姓名 from 测试数据 where 班级='" & rst1(0) & "'", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  10.         rst3.Open "结果表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  11.         Arr = rst2.GetRows()
  12.         For i = 0 To UBound(Arr, 2)
  13.             For j = i + 1 To UBound(Arr, 2)
  14.                 For k = j + 1 To UBound(Arr, 2)
  15.                     rst3.AddNew
  16.                     rst3(0) = Arr(0, i)
  17.                     rst3(1) = Arr(0, j)
  18.                     rst3(2) = Arr(0, k)
  19.                     rst3(3) = rst1(0)
  20.                 Next
  21.             Next
  22.         Next
  23.         rst3.UpdateBatch
  24.         rst3.Close
  25.         rst2.Close
  26.         rst1.MoveNext
  27.     Loop
  28.     rst1.Close
  29. End Sub
复制代码

附上2007版本附件,如果你的是2003的话,请新建一个模块,把上述代码贴上,在VBE界面下,按下F5执行即可。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
2#
发表于 2015-12-31 10:46:13 | 显示全部楼层
bfwz 发表于 2015-12-30 22:14
谢谢版主答复。
结果非常好。

Access里没有递归查询,没法解决。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-18 19:04 , Processed in 0.090705 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表