hiroton
2020/10/27 (火) 09:59:32
7c8fb@f966d
一連の質問の延長ですかね?
最終的に合体テーブル(タイトル、感想、製作年、国、おすすめ度合い、タイプ、etc...)を作りたい。とか
Set rs = db.OpenRecordset(tblname)
Database.OpenRecordset メソッド (DAO)
tblname
にはクエリを指定することもできます
'//テーブル1パターン
Private Sub データ追加_Click()
Dim strSQL As String
strSQL = "SELECT タイトル, 感想, 製作年, 国 FROM 合体テーブル"
Call AddData(strSQL, Me.txtデータ)
End Sub
こんな感じで必要な列と並びを指定してあげればデータごとにインポート用のテーブルを作る必要はないですよ
通報 ...
仰る通り一連の質問の延長でした。
取り込む際に設定して1つのテーブルにすればよかったのですね。
ごめんなさい、例ではフィールド名を同じにしてしまいましたが、
実際は微妙に違う名前ですのでそれで書いてみます。
下記認識で正しいでしょうか…?
パターン1【フィールド名】タイトル、感想、製作年、国
パターン2【フィールド名】題名、作られた年
パターン3【フィールド名】タイトル、思ったこと、国名
パターンごとに3つボタンを作成。それぞれステートメント3行目を下記内容に変える。
以上、何卒宜しくお願いいたします。
「合体テーブル」のフィールド名を挙げてください
(「合体テーブル」も分割したテーブルがなくなると名前が変わりそうですね)
ありがとうございます。
仰る通り合体テーブルは変更して、「作品テーブル」とさせていただきます。
フィールド名は
タイトル、感想、製作年、国、おすすめ度合い、タイプ
でお願いします。
おすすめ度合い、タイプは後から追記するためのフィールドです。
メインのデータ取込処理は
ですね。ループ処理になっているのでそれっぽく書き直すと
な感じになります。これの意味するところは
rs
の0番目にDatas
の0番目を入れる、rs
の1番目にDatas
の1番目を入れる・・・ということで、元データのフィールド名も作品テーブルのフィールド名も関係ありません。列番号だけ見て同じ列に値を入れているだけです。(列を飛ばしたりもできません)例えばパターン2なら
tblname
の1列目に「題名」を入れる、2列目に「作られた年」を入れるという処理をしていて、対応した列になっていればフィールド名は不問ですというわけで、「作品テーブル」から元データの列に対応する列を持ったテーブルをクエリ(SQL構文)で用意してあげます
ありがとうございます。
取込不要の列があった場合にはどうなりますか?以下のように空欄にしてよいでしょうか。
※例えばパターン4の3列目に「取込不要列」があったとする。
ちょっと脱線しますがクエリとSQLについての知識を身につけましょう
ざっくりですが、SQLはデータベースを扱うための命令書の仕様、クエリはSQLに従って作成された実際の命令書といった感じです
ACCESSはSQLを意識することなくクエリを扱えるアプリケーションですが、クエリの実態はきちんとSQLです。クエリデザインでリボンの「表示」からSQLビューとデザインビューを相互に切り替えることができ、ACCESSのGUI(クエリデザイン)で作成するものがSQLであることが確認できます
つまり、SQL構文を記述するというのはクエリを作成すると同じことをしているわけです
それでは、クエリデザインを起動しテーブルの表示では何も選ばずに閉じて、SQLビューを表示してみましょう
と表示された画面が表示されるはずです。選択クエリを作成しようとし、テーブルを一つも選んでいないので選択クエリであることを表すSQLの命令
SELECT
のみが表示されている状態です。これをに書き換えてデザインビュー、データシートビューと切り替えてみましょう。よく使う形のものを見ることができると思います。このデータシートビューをみれば「対応する列を持ったテーブルを作成する」の意味が分かると思います
うまく動いたらSQLビューとデザインビューを切り替えて見比べてみてください。何となくSQL構文のどこがどういう意味なのか分かると思います
そうしたら次に
も同様にSQLビューにコピペして試してみましょう
掲示板ではクエリデザインでのイメージを伝えるのが難しいものです。SQLビューを使ったSQL文のコピペのやり取りができると間違いのないやり取りができるようになるのでうまく活用できるようになりましょう
長文ありがとうございます🙇♂️
後ほど試させていただきます✊