設為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 2842|回復: 8
打印 上一主題 下一主題

[幫助] 追加查詢,循環(huán)套用

[復制鏈接]
跳轉到指定樓層
1#
發(fā)表于 2014-12-26 11:28:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請教大家
我現(xiàn)在要處理一個表,但是表的表頭不固定,每次收到的數(shù)據會有變動,只有幾個字段是固定的,表的大概樣式如下
日期/類目/項目1/項目2/項目3/。。。。。/項目n,各項目字段內容都是數(shù)字,各類目的數(shù)字
我現(xiàn)在要將其轉換到另一張表中,表頭如下
日期/類目/項目名/金額
因為個人VB不精通,不知如何寫
望指點,謝謝
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2014-12-26 13:46:35 | 只看該作者
1、搜索下老漢的“來回折騰”
2、導入表之后寫聯(lián)合查詢(假設導入的表為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

然后以這個查詢?yōu)閿?shù)據源進行追加。
3#
 樓主| 發(fā)表于 2014-12-26 14:14:53 | 只看該作者
roych 發(fā)表于 2014-12-26 13:46
1、搜索下老漢的“來回折騰”
2、導入表之后寫聯(lián)合查詢(假設導入的表為sheet1):
select 日期.類目,"項 ...

不好意思,帖子搜索不到,是不是時間比較久了
我這邊的問題是,我不知道每次收表中,有哪些項目(即表頭),只有幾個是固定的
4#
發(fā)表于 2014-12-26 14:17:45 | 只看該作者
本帖最后由 roych 于 2014-12-26 14:20 編輯

1、http://ctxi.cn/forum.php?mod=viewthread&tid=96091
2、可以先建立一個文本文件,把這個語句保存下來,后面多復制幾行不就行了么?新建查詢時,修改為SQL視圖,然后把語句粘貼上去就好了。我個人不是很推薦寫代碼。又或者你可以看看這個:
http://ctxi.cn/thread-119185-2-1.html,第11樓的回復。
5#
 樓主| 發(fā)表于 2014-12-29 14:26:32 | 只看該作者
roych 發(fā)表于 2014-12-26 14:17
1、http://ctxi.cn/forum.php?mod=viewthread&tid=96091
2、可以先建立一個文本文件,把這個語 ...

看了你發(fā)的樣例,和我的需求不同
6#
 樓主| 發(fā)表于 2014-12-29 14:31:16 | 只看該作者
roych 發(fā)表于 2014-12-26 14:17
1、http://ctxi.cn/forum.php?mod=viewthread&tid=96091
2、可以先建立一個文本文件,把這個語 ...

我現(xiàn)在收到的原始表,是除了時間,類目是固定,作為列的項目是一直在變化,比如
原表:日期   類目   項目A   項目B......
2014-12-1    A        50        60........
2014-12-2    B        1000     20........
現(xiàn)在要轉換為
      日期    類目     項目    金額
2014-12-1  A         項目A   50
2014-12-1  A        項目B    60
2014-12-2  B        項目A   1000
2014-12-2  B       項目B     20

麻煩的地方時,每次收到的表的項目不是固定的  
7#
發(fā)表于 2014-12-29 16:18:41 | 只看該作者
本帖最后由 todaynew 于 2014-12-30 11:27 編輯
dsz5142 發(fā)表于 2014-12-29 14:31
我現(xiàn)在收到的原始表,是除了時間,類目是固定,作為列的項目是一直在變化,比如
原表:日期   類目   項 ...


寫個子程序不就完事了

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



點評

我就是懶得寫程序^_^這個本身可以在源頭上控制的。  發(fā)表于 2014-12-29 16:50
8#
 樓主| 發(fā)表于 2014-12-30 09:17:23 | 只看該作者
todaynew 發(fā)表于 2014-12-29 16:18
寫個子程序不就完事了

sub Transition(oldtbname as string,newtbname as string)

謝謝兩位給予的支持,解答
roych說的是,這個本身是可以從源頭控制,但是大部分時候,是沒有辦法控制的,只能想辦法滿足需求部門的需要,再次感謝
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 10:25 , Processed in 0.104825 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表