Office中国论坛/Access中国论坛

标题: 追加查询,循环套用 [打印本页]

作者: dsz5142    时间: 2014-12-26 11:28
标题: 追加查询,循环套用
请教大家
我现在要处理一个表,但是表的表头不固定,每次收到的数据会有变动,只有几个字段是固定的,表的大概样式如下
日期/类目/项目1/项目2/项目3/。。。。。/项目n,各项目字段内容都是数字,各类目的数字
我现在要将其转换到另一张表中,表头如下
日期/类目/项目名/金额
因为个人VB不精通,不知如何写
望指点,谢谢
作者: roych    时间: 2014-12-26 13:46
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

然后以这个查询为数据源进行追加。
作者: dsz5142    时间: 2014-12-26 14:14
roych 发表于 2014-12-26 13:46
1、搜索下老汉的“来回折腾”
2、导入表之后写联合查询(假设导入的表为sheet1):
select 日期.类目,"项 ...

不好意思,帖子搜索不到,是不是时间比较久了
我这边的问题是,我不知道每次收表中,有哪些项目(即表头),只有几个是固定的

作者: roych    时间: 2014-12-26 14:17
本帖最后由 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楼的回复。

作者: dsz5142    时间: 2014-12-29 14:26
roych 发表于 2014-12-26 14:17
1、http://www.office-cn.net/forum.php?mod=viewthread&tid=96091
2、可以先建立一个文本文件,把这个语 ...

看了你发的样例,和我的需求不同
作者: dsz5142    时间: 2014-12-29 14:31
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

麻烦的地方时,每次收到的表的项目不是固定的  
作者: todaynew    时间: 2014-12-29 16:18
本帖最后由 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




作者: dsz5142    时间: 2014-12-30 09:17
todaynew 发表于 2014-12-29 16:18
写个子程序不就完事了

sub Transition(oldtbname as string,newtbname as string)

谢谢两位给予的支持,解答
roych说的是,这个本身是可以从源头控制,但是大部分时候,是没有办法控制的,只能想办法满足需求部门的需要,再次感谢




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3