Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]把同一款号的资料收列变成行

菜鸟  发表于:2011-12-07 15:55:29  
复制

点击下载此附件

怎么把同一款号的资料由列变成行

注:每款号的石料编号、数量、重量的列数是不固定的!

谢谢!

 

Top
叶海峰 发表于:2011-12-07 16:38:14

运行以下代码:

 

Sub a()
    Dim rst    As DAO.Recordset
    Dim rst1   As DAO.Recordset
    Dim rst2   As DAO.Recordset
    Dim i      As Long
    i = 1
    CurrentDb.Execute "delete * from 把同一款号的资料为了一行(想要的结果)"
    Set rst = CurrentDb.OpenRecordset("select 款号 from 原表 group by 款号", , vbReadOnly)
    Set rst2 = CurrentDb.OpenRecordset("把同一款号的资料为了一行(想要的结果)")
    rst.MoveLast
    rst.MoveFirst
    Do Until rst.EOF
        Set rst1 = CurrentDb.OpenRecordset("select 石料编号,数量,重量 from 原表 where 款号='" & rst!款号 & "'")
        rst1.MoveLast
        rst1.MoveFirst
        rst2.AddNew
        rst2!款号 = rst!款号
        rst2.Update
        rst2.MoveLast
        Do Until rst1.EOF
            rst2.Edit
            rst2(i) = rst1!石料编号
            rst2(i + 1) = rst1!数量
            rst2(i + 2) = rst1!重量
            rst2.Update
            i = i + 3
            rst1.MoveNext
        Loop
        i = 1
        rst.MoveNext
    Loop
    rst.Close: Set rst = Nothing
    rst1.Close: Set rst1 = Nothing
    rst2.Close: Set rst2 = Nothing
End Sub



风行 发表于:2011-12-07 19:39:16

点击下载此附件

看最后一个查询



总记录:2篇  页次:1/1 9 1 :