设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2869|回复: 14
打印 上一主题 下一主题

[查询] 如何要联合查询“按理出牌”

[复制链接]
跳转到指定楼层
1#
发表于 2009-1-11 17:22:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
见附件:联合查询
要 t 从-42   到 62  三组顺序排列,mod 3=0出现重复,t<0时也不按理出牌。
大家帮帮有什么好办法?

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
14#
发表于 2009-1-14 21:17:02 | 只看该作者
原帖由 kelind 于 2009-1-14 21:02 发表
谢谢!好象是懂了,但我还是写不出来。

本帖子中包含更多资源

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

x
13#
 楼主| 发表于 2009-1-14 21:02:38 | 只看该作者
谢谢!好象是懂了,但我还是写不出来。
12#
发表于 2009-1-14 20:25:54 | 只看该作者
1, strSQL = "select t_id from tb_out where t_id mod 3=0 order by t_id"
为什么只 mod 3 =0     mod 3 =1, =2   怎么处理的?
只要把关键的记录提取出来就可以了,另两个记录可以用条件来提取。
2, For i = 0 To UBound(lngArray) UBound什么函数?
返回一个 Long 型数据,其值为指定的数组维可用的最大下标。
3, rst.Fields(j + k) = .Fields(j)
这里的k主要起到当记录集移到下一个记录时,(按你的要求应该是将第二个记录的第一个字段添加到新表第一条记录的第五个字段)
也就是,第二条记录索引加上第一条记录的字段数,
11#
 楼主| 发表于 2009-1-14 16:28:14 | 只看该作者
版主真牛X,几个地方没有完全理解,请指教:
1, strSQL = "select t_id from tb_out where t_id mod 3=0 order by t_id"
为什么只 mod 3 =0     mod 3 =1, =2   怎么处理的?
2, For i = 0 To UBound(lngArray) UBound什么函数?
3, rst.Fields(j + k) = .Fields(j)
                Next
                .MoveNext
                k = k + .Fields.Count
            Loop
            .Close
            rst.UpdateBatch
            k = 0
K 想了半天没明白.
        能否把代码解释一下.
      要求太苛刻了点.
    谢谢.
10#
发表于 2009-1-13 22:18:31 | 只看该作者
假设结果表名称为 A

Dim rs As New ADODB.Recordset
    Dim rst As New ADODB.Recordset
    Dim strSQL As String
    Dim lngArray() As Long
    Dim i As Long, j As Integer
    Dim k As Integer
    strSQL = "select t_id from tb_out where t_id mod 3=0 order by t_id"
    With rs
        .Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
        ReDim lngArray(.RecordCount - 1) As Long
        For i = 0 To .RecordCount - 1
            lngArray(i) = .Fields(0)
            .MoveNext
        Next
        .Close
        rst.Open "A", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
        For i = 0 To UBound(lngArray)
            strSQL = "select * from tb_out where t_id between " & lngArray(i) & _
                   " and " & lngArray(i) & "+2"
            .Open strSQL, CurrentProject.Connection, adOpenKeyset, _
                  adLockReadOnly
            rst.AddNew
            Do While Not .EOF
                For j = 0 To .Fields.Count - 1
                    rst.Fields(j + k) = .Fields(j)
                Next
                .MoveNext
                k = k + .Fields.Count
            Loop
            .Close
            rst.UpdateBatch
            k = 0
        Next
    End With
    rst.Close
    Set rst = Nothing
    Set rs = Nothing
9#
发表于 2009-1-13 07:32:15 | 只看该作者
建一个您想要的结果表(空表)
然后,用ado打开原表,循环取出记录
在打开结果表,循环增加记录。
8#
 楼主| 发表于 2009-1-12 23:18:23 | 只看该作者
原帖由 Henry D. Sy 于 2009-1-12 08:58 发表
明白了
试试用记录集,也许会简单点。

没明白,怎么用?实在没头绪。请赐教。
7#
发表于 2009-1-12 08:58:02 | 只看该作者
明白了
试试用记录集,也许会简单点。
6#
发表于 2009-1-11 23:28:23 | 只看该作者
一般是一条记录一行,现在要三条记录一行。
还是看不明白,你能不能将要得到的结果贴张图出来
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 18:45 , Processed in 0.082547 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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