初めての店舗開業を成功させよう>>

インポートしたデータを項目名が一致したフィールドを作業テーブルに追加クエリしたい。 ご回答ありがとうございます。是非教えてください。
・インポートは先頭行をフィールド名として使ってません。
項目名_PP(20個)にある項目名とインポートした一時テーブルにある項目と一致したフィールドを作業テーブルに追加したいのですが取得した20フィールドを作業テーブルに追加をどうやっていいかわかりません。
作業テーブルも20項目あるのですが・・ご教授お願いします。

Set db = CurrentDb()
Dim rs As DAO.Recordset
Dim rstop As DAO.Recordset
Dim SQL As String
Dim SQLTop As String
Dim iCntTop As Integer
Dim sERRTXT As String
Dim bFlg As Boolean
Dim sSQLNM As String

SQL = "項目名_PP"
SQLTop = "一時テーブル"
If F_RecordsetOpen(SQLTop, rstop, dbOpenSnapshot, dbReadOnly) Then
If F_RecordsetOpen(SQL, rs, dbOpenSnapshot, dbReadOnly) Then
Do Until rs.EOF
For iCntTop = 0 To 254

sSQLNM = ""
'項目名が一致したら(=必要項目)ループを抜ける
If rstop.Fields(iCntTop) = rs![項目名] Then
sSQLNM = rstop.Fields(iCntTop).Name
Debug.Print sSQLNM
Exit For
End If

Next iCntTop
If Trim(sSQLNM) <> "" Then

' SQL = " INSERT INTO 作業テーブル

' 'sSQLNMでループで抜けたフィールドを追加作業テーブルに追加したいのですが・・・

Call F_ExecuteSQL(SQL)

End If
rs.MoveNext
Loop

End If

Call S_RecordsetClose(rs)

End If

Call S_RecordsetClose(rstop)



End Sub

このQ&Aに関連する最新のQ&A

A 回答 (2件)

変数dbも宣言せずにいきなり


>Set db = CurrentDb()
もないと思いますが。

>If F_RecordsetOpen(SQLTop, rstop, dbOpenSnapshot, dbReadOnly) Then
>If F_RecordsetOpen(SQL, rs, dbOpenSnapshot, dbReadOnly) Then

これは何のおまじないですか?
レコードセットを開いたつもり、なのですか?
あるいはF_RecordsetOpenは関数ですか?


>Do Until rs.EOF

レコードセットを開くと宣言せずにいきなりrs.EOFと
言われたらAccessであろうとVBであろうと文句を言われますが。
rsあるいはrstopとはどのレコードセット(テーブル、あるいはクエリ)ですか?


「取得した20フィールド」とあるのに何故
For iCntTop = 0 To 254 のように255もループする必要があるのか?


あとは、わけのわからない
>Call S_RecordsetClose(rs)
>Call S_RecordsetClose(rstop)
など。関数なのかあるいはレコードセットを閉じたつもり、
なのか。


以上、質問に対する疑問です。もしレコードセットの
扱いがまったくわからないのならば、適当にコードを
羅列して質問するよりは、

1 「インポートしたデータ」のテーブルのテーブル名、フィールド名
  やフィールドの型
2 作業テーブルの名前、フィールド名など
3  「項目名_PP(20個)にある項目名」とは?


こうしたことをきちんと質問に織り込むほうが
まともな回答を受けやすいのでは、と思いますが。
    • good
    • 0

INSERT は、あくまでデータの変更であり、DML に分類されます。


テーブルの変更であれば DDL を実行する必要があります。

作業テーブルが作業用に作り直すテーブルなら、削除して
Create Table してもいいでしょうし、カラムの変更は
Alter Table です。データベース毎に方言があるので
データベースの種類に合わせた SQL を実行して下さい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング