设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[表] 连续数字的问题,请tmtony老师赐教

[复制链接]
跳转到指定楼层
1#
发表于 2008-3-5 19:12:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对tmtonyf老师在短消息上热情的回复表示衷心的感谢
ID                      订单                 产品序号
50002               S1                   1
50002              S1                     2
50002             S1                      5
50008             S2                      9
50002              S3                     7
50002              S5                     10
50002              S3                     6
结果表(同一ID的记录合并为一条记录)
ID                            订单                 产品序号
50002               S1                                      1-2 5-7 10
50008               S2                                      9
订单字段内容不重要,可以不用处理,关键是产品序号要做成结果表的格式。请tmtony老师及各位高手赐教

[ 本帖最后由 dellnb 于 2008-3-6 00:26 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2008-3-5 21:06:11 | 只看该作者
等待中..............
3#
 楼主| 发表于 2008-3-5 22:34:40 | 只看该作者
请高手赐教

[ 本帖最后由 dellnb 于 2008-3-5 22:49 编辑 ]

点击这里给我发消息

4#
发表于 2008-3-5 23:34:38 | 只看该作者
原始表是这样的格式
ID                            订单                 产品序号
50002               S1                                      51099001
50002              S1                                      51090002
50002             S1                                      51090009
50008             S2                                      51010003

还是

ID                            订单                                                       产品序号
50002                    s1                      51093221    51093222        51094658       001   51099002   51099003
这样的格式
即是多条记录,还是一条记录
5#
 楼主| 发表于 2008-3-5 23:37:57 | 只看该作者

回复 4# 的帖子

原始表是这样的格式
ID                            订单                 产品序号
50002               S1                                      51099001
50002              S1                                      51099002
50002             S1                                      51090009
50008             S2                                      51010003

[ 本帖最后由 dellnb 于 2008-3-5 23:49 编辑 ]
6#
 楼主| 发表于 2008-3-5 23:40:32 | 只看该作者
原始表格是多条记录,由于同一ID的产品序号太多,而且中间有断号,有些是连续的有些不是,序号有可能连续几十个,所以要做成结果表的样子才能打印下来
也就是说产品序号如果是1 2 3 4 5 6 7 就处理成1-7这样的格式

[ 本帖最后由 dellnb 于 2008-3-5 23:50 编辑 ]

点击这里给我发消息

7#
发表于 2008-3-6 00:05:54 | 只看该作者
处理好了一部分,既有连续,也有不连续的号 比较难处理, 可能要明天继续了
8#
 楼主| 发表于 2008-3-6 00:14:41 | 只看该作者
谢谢老师,您受累

点击这里给我发消息

9#
发表于 2008-3-6 00:44:57 | 只看该作者
今晚做好上传给你.

点击这里给我发消息

10#
发表于 2008-3-6 00:54:39 | 只看该作者
Dim rs As ADODB.Recordset
  Set rs = New ADODB.Recordset
  Dim rsResult As ADODB.Recordset
  Set rsResult = New ADODB.Recordset
  Dim lngSeqNo As Long
  Dim lngId As Long
  Dim strOrder As String
  
  Dim strStartNo As String
  Dim strEndNo As String
  
  Dim strAllSeqNo As String
  CurrentProject.Connection.Execute "Delete * from tblOrderResult"
  tblOrderResult.Form.Requery
  rsResult.Open "select * from tblOrderResult", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  rs.Open "select * from tblOrder order by FId,FOrder,FSeqno", CurrentProject.Connection, adOpenStatic, adLockReadOnly
  strOrder = ""
  lngId = 0
  lngSeqNo = 0
  Do While Not rs.EOF
   
    If lngId = rs("FId") And strOrder = rs("FOrder") Then
        If rs("FSeqNo") - lngSeqNo = 1 Then
            strEndNo = rs("FSeqNo")
        Else
            If strEndNo = "" Then
               strAllSeqNo = strAllSeqNo & " " & strStartNo
            Else
               strAllSeqNo = strAllSeqNo & " " & strStartNo & "-" & strEndNo
            End If
            'strAllSeqNo = strAllSeqNo & " " & strStartNo & "-" & strEndNo
            strStartNo = rs("FSeqNo")
            strEndNo = ""
        End If
    Else
        If strEndNo = "" Then
           strAllSeqNo = strAllSeqNo & " " & strStartNo
        Else
           strAllSeqNo = strAllSeqNo & " " & strStartNo & "-" & strEndNo
        End If
        If lngId <> 0 Then
            rsResult.AddNew
            rsResult("FId") = lngId
            rsResult("FOrder") = strOrder
            rsResult("FSeqNo") = Trim(strAllSeqNo)
            rsResult.Update
            strAllSeqNo = ""
        End If
        lngId = rs("FId")
        strOrder = rs("FOrder")
        
        strStartNo = rs("FSeqNo")
        strEndNo = ""
    End If
    lngSeqNo = rs("FSeqNo")
    rs.MoveNext
  Loop
    If strEndNo = "" Then
       strAllSeqNo = strAllSeqNo & " " & strStartNo
    Else
       strAllSeqNo = strAllSeqNo & " " & strStartNo & "-" & strEndNo
    End If
  If lngId <> 0 Then
            rsResult.AddNew
            rsResult("FId") = lngId
            rsResult("FOrder") = strOrder
            rsResult("FSeqNo") = Trim(strAllSeqNo)
            rsResult.Update
  End If
  tblOrderResult.Form.Requery
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 04:29 , Processed in 0.100717 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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