Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Pro : Access 2016)
テーブルのフィールド名をクエリ上で自動変換
投稿日時: 22/04/30 09:41:33
投稿者: sasa

いつもお世話になっております。
 
申し訳ありません、一つお教え下さい。
 
現在テーブルのフィールド名として
 
A、B、C、D、E
があります。(なお、データ型は様々です。)
 
これを、
a、b、c、d、e
とクエリ上のフィールド名にしたいのですが、
 
例えばフィールド名変換テーブルというものを作り、それに基づき自動的にクエリ上で
変換してもらうような方法は可能なのでしょうか?
 
[フィールド名変換テーブル]
TF名 QF名
A a
B b
C c
D d
E e
 
可能であればぜひご教授頂けると助かります。
 
以上よろしくお願いいたします。
 
 

回答
投稿日時: 22/04/30 10:15:49
投稿者: hatena
投稿者のウェブサイトに移動

SELECT A AS a,  B AS b, C AS c, D AS d, E AS e From テーブル名

というようなSQLをVBAで生成することになりますね。
 
ただ、なんのために、このようなことをするのでしょうか。
その理由を教えていただければ、場合によっては他にもっといい方法があるように思います。

投稿日時: 22/05/02 11:28:34
投稿者: sasa

hatena様
 
ありがとうございます。
 
目的としては、会計ソフトへのデータ受入を行うにあたり、
会計ソフトの受入記号(アルファベットと数字)に、
現在Accessで使われているフィールド名(借方勘定科目コード 等)
を変換すれば受け入れが楽だなと思い、今回質問させていただきました。
 
なお、会計情報が格納されている複数のAccessで作られたフィールド名が
適当(借方勘定科目コードや借方科目コード、借方科目CD 等、同じものなのですが
作られたAccessファイルによってフィールド名が複数存在します。)
につけられており、1回作って終了というわけではない為、変換テーブルのようなもので
マッチングできたらと思って質問させていただきました。
 
hatena様の方法でお願いしたいのですが、とりあえず手作りで
SELECT A AS a, B AS b, C AS c, D AS d, E AS e From テーブル名
を作り、問題がない事を確認しました。
 
そのうえで教えて頂きたいのですが、vbaで、[フィールド名変換テーブル]の情報より、
SELECT A AS a, B AS b, C AS c, D AS d, E AS e From テーブル名
をどうやって生成すればよいのかが分からず、。
 
申し訳ございませんが御教授頂けると幸いです。
 
以上よろしくお願いいたします。
 

回答
投稿日時: 22/05/02 20:07:07
投稿者: hatena
投稿者のウェブサイトに移動

引用:
1回作って終了というわけではない為、変換テーブルのようなもので
マッチングできたらと思って質問させていただきました。

 
この辺の事情がよく理解できないのですが、同じようなフィールドを持つテーブルが大量にあるのですか。
また、一回で終わらずに、定期的にそのような処理が発生するものなのですか。
 
データベースの設計としてはありえない状況だと思うのですが。

回答
投稿日時: 22/05/02 21:42:10
投稿者: hatena
投稿者のウェブサイトに移動

とりあえず参考のコードだけ提示しておきます。
 

 
Public Sub test()
    Dim rs As Dao.Recordset
    Set rs = CurrentDb.OpenRecordset("フィールド名変換テーブル")
    
    Dim stSQl As String
    Do Until rs.EOF
        stSQl = stSQl & ", " & rs!TF名 & " AS " & rs!QF名
        rs.MoveNext
    Loop

    stSQl = "SELECT " & Mid(stSQl, 3) & " FROM テーブル名;"
    
    Debug.Print stSQl
End Sub

投稿日時: 22/05/02 22:59:48
投稿者: sasa

hatena様
ありがとうございます。
 
>同じようなフィールドを持つテーブルが大量にあるのですか。
会計ソフト側の受入記号は同じなのですが、それぞれの業務別に作られているAccessのファイルが
多数あり、それらのAccess側のフィールド名がバラバラなので、結構な業務量になってしまいまして。
テーブルではなく、ファイル自体が多数あります。
 
>また、一回で終わらずに、定期的にそのような処理が発生するものなのですか。
そういう意味では各Accessファイル毎に1回ずつで完了します。
 
ありがとうございました。助かりました。