设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[帮助] 追加查询,循环套用

[复制链接]
跳转到指定楼层
1#
发表于 2014-12-26 11:28:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
请教大家
我现在要处理一个表,但是表的表头不固定,每次收到的数据会有变动,只有几个字段是固定的,表的大概样式如下
日期/类目/项目1/项目2/项目3/。。。。。/项目n,各项目字段内容都是数字,各类目的数字
我现在要将其转换到另一张表中,表头如下
日期/类目/项目名/金额
因为个人VB不精通,不知如何写
望指点,谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
8#
 楼主| 发表于 2014-12-30 09:17:23 | 只看该作者
todaynew 发表于 2014-12-29 16:18
写个子程序不就完事了

sub Transition(oldtbname as string,newtbname as string)

谢谢两位给予的支持,解答
roych说的是,这个本身是可以从源头控制,但是大部分时候,是没有办法控制的,只能想办法满足需求部门的需要,再次感谢
7#
发表于 2014-12-29 16:18:41 | 只看该作者
本帖最后由 todaynew 于 2014-12-30 11:27 编辑
dsz5142 发表于 2014-12-29 14:31
我现在收到的原始表,是除了时间,类目是固定,作为列的项目是一直在变化,比如
原表:日期   类目   项 ...


写个子程序不就完事了

sub Transition(oldtbname as string,newtbname as string)
      dim rs1 as new adodb.recordset,rs2 as new adodb.recordset
      dim i as long,j as long
      rs1.Open oldtbname, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
      rs2.Open newtbname, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
      for i=1 to rs1.RecordCount
              for j=2 to rs1.fields.count-1
                    if rs1.fields(j).name like "项目*" then
                             rs2.addnew
                             rs2!日期.value=rs1!日期.value
                             rs2!类目.value=rs1!类目.value
                             rs2!项目.value=rs1.fields(j).name
                             rs2!金额.value=rs1.fields(j).value
                             rs2.update
                   end if
            next
            rs1.movenext
      next
     rs1.close:set rs1=nothing
     rs2.close:set rs2=nothing
end sub



点评

我就是懒得写程序^_^这个本身可以在源头上控制的。  发表于 2014-12-29 16:50
6#
 楼主| 发表于 2014-12-29 14:31:16 | 只看该作者
roych 发表于 2014-12-26 14:17
1、http://www.office-cn.net/forum.php?mod=viewthread&tid=96091
2、可以先建立一个文本文件,把这个语 ...

我现在收到的原始表,是除了时间,类目是固定,作为列的项目是一直在变化,比如
原表:日期   类目   项目A   项目B......
2014-12-1    A        50        60........
2014-12-2    B        1000     20........
现在要转换为
      日期    类目     项目    金额
2014-12-1  A         项目A   50
2014-12-1  A        项目B    60
2014-12-2  B        项目A   1000
2014-12-2  B       项目B     20

麻烦的地方时,每次收到的表的项目不是固定的  
5#
 楼主| 发表于 2014-12-29 14:26:32 | 只看该作者
roych 发表于 2014-12-26 14:17
1、http://www.office-cn.net/forum.php?mod=viewthread&tid=96091
2、可以先建立一个文本文件,把这个语 ...

看了你发的样例,和我的需求不同
4#
发表于 2014-12-26 14:17:45 | 只看该作者
本帖最后由 roych 于 2014-12-26 14:20 编辑

1、http://www.office-cn.net/forum.php?mod=viewthread&tid=96091
2、可以先建立一个文本文件,把这个语句保存下来,后面多复制几行不就行了么?新建查询时,修改为SQL视图,然后把语句粘贴上去就好了。我个人不是很推荐写代码。又或者你可以看看这个:
http://www.office-cn.net/thread-119185-2-1.html,第11楼的回复。
3#
 楼主| 发表于 2014-12-26 14:14:53 | 只看该作者
roych 发表于 2014-12-26 13:46
1、搜索下老汉的“来回折腾”
2、导入表之后写联合查询(假设导入的表为sheet1):
select 日期.类目,"项 ...

不好意思,帖子搜索不到,是不是时间比较久了
我这边的问题是,我不知道每次收表中,有哪些项目(即表头),只有几个是固定的
2#
发表于 2014-12-26 13:46:35 | 只看该作者
1、搜索下老汉的“来回折腾”
2、导入表之后写联合查询(假设导入的表为sheet1):
select 日期.类目,"项目1" as 项目名,项目1 as 金额 from sheet1
union all
select 日期.类目,"项目2" as 项目名,项目2 as 金额 from sheet1
……………………
union all
select 日期.类目,"项目n" as 项目名,项目n as 金额 from sheet1

然后以这个查询为数据源进行追加。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 00:53 , Processed in 0.106862 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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