No.7ベストアンサー
- 回答日時:
クエリでは実現できないデータのまとめかた
なので、以下のようにプログラムを組む
必要があります。
各クエリがたとえば、
クエリ:○×町-A
name ○×町面積
○×町 123
が、
クエリ:○×町-A
name ○×町面積
○×町 123
○×町 259
○×町 393
のようにまだデータを取る場合は
また、違う方法をとらなければなりませんが、
各クエリが提示されたようにレコードが一つ
ならば、以下のようになります。
ただし、フィールドの並びが、
name ○×町面積
のようになっていることが条件です。
(1)
データを収めるテーブルを一つ用意します。
テーブルの名前を、T面積
フィールドの名前を、名称、町面積A、町面積B
とします。尚、nameという名称はコードの中では
いろいろと面倒なことが起きる名称なので、
クエリのnameという名前は名称とします。
したがって、各クエリのnameのところを、デザインビューで、
名称:name
としてください。
なお、T面積の各フィールドの型のテキスト型、数値型
などは、そちらのデータにあわせてください。
(2)
新規のフォームにボタンを作り、以下のコードを
フォームのコード表に張り付けて保存してください。
Private Sub コマンド0_Click()
Dim db As Database
Dim qdf As QueryDef
Dim rs As Recordset
Dim rsqA As Recordset
Dim rsqB As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("T面積", dbOpenDynaset)
'登録されているクエリを検索
For Each qdf In db.QueryDefs
'先にクエリの名前の末尾2字が-Aとなっているクエリを検索
If Right(qdf.Name, 2) = "-A" Then
Set rsqA = db.OpenRecordset(qdf.Name, dbOpenDynaset)
If rsqA.RecordCount > 0 Then
rsqA.MoveFirst
'クエリのデータをテーブルに格納
Do Until rsqA.EOF
rs.AddNew
rs!名称 = rsqA!名称
rs!町面積A = rsqA.Fields(1)
rs.Update
rsqA.MoveNext
Loop
End If
rsqA.Close: Set rsqA = Nothing
End If
'クエリの名前の末尾2字が-Bとなっているクエリを検索
If Right(qdf.Name, 2) = "-B" Then
Set rsqB = db.OpenRecordset(qdf.Name, dbOpenSnapshot)
If rsqB.RecordCount > 0 Then
rsqB.MoveFirst
Do Until rsqB.EOF
'格納先のテーブルを検索
rs.MoveFirst
Do Until rs.EOF
'格納先の名称と同じものがクエリに存在するか検索
If rs!名称 = rsqB!名称 Then
'クエリのデータをテーブルに格納
rs.Edit
rs!名称 = rsqB!名称
rs!町面積B = rsqB.Fields(1)
rs.Update
rsqB.MoveNext
End If
rs.MoveNext
Loop
Loop
End If
rsqB.Close: Set rsqB = Nothing
End If
'検索のため次のクエリに移動
Next qdf
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
End Sub
各クエリのデータが一件づつというのは、
余りにも非効率な気がします。、
このようなデータの取り方をしなければ
ならない事情があるならば別ですが、
もしデータが大量にあってこのような
クエリを大量につくらなけらばならないのならば
何をどのようにしたい、ということがわかれば
プログラムだけ、あるいは少しのクエリと
プログラムの組み合わせで十分対応できるのでは
と思います。
なお、提示したプログラムはあくまでも各クエリが
データを一件づつしかもたない場合に限定されます。
一件ではない場合は、クエリの作り方とコードを
変更する必要があります。そのあたりは、いかがですか。
お礼が遅くなって申し訳ありません。
教えていただいたこと実現できました、ありがとうございます。
やりたいことが少し複雑になるだけで、こんなにいろいろと
手数が必要になるのですね。
初心者の私には、教えていただいたことを実現するのが精一杯
で、とても自力でできるほど理解できていません。^^;
教えていただいたおかげで、Accessの理解が少し深まりました。
何度も回答いただきまして、本当にありがとうございました。
No.8
- 回答日時:
#7です。
コードをフォームのコード表に貼り付け保存した後、
コード表のツール→参照設定から、
Microsoft DAO xx Object Libraryにチェックを入れて
ください。xxは3.6のような数字です。xxは一番数値が
高いものを選択してください。なお、
Microsoft ActiveX Data Objects xx Libraryにチェックが
入っていたらはずしてください。
No.6
- 回答日時:
#5です。
あるいは、クエリ:○×町-A
name ○×町面積
○×町 123
クエリ:○×町-B
name ○×町面積
○×町 345
クエリ:△△町-A
name △△町面積
△△町 567
クエリ:△△町-B
name △△町面積
△△町 789
ということでしょうか。
それから、補足のまとめは、
name 町面積A 町面積B 町面積C 町面積D
○×町 123 345 365 698
△△町 567 789 244 983
のような事にもなるのでしょうか。あるいは、
name 町面積A 町面積B
○×町 123 345
△△町 567 789
○△町 698 423
・
・
のようになるのでしょうか。
この回答への補足
クエリ:○×町-A
name ○×町面積
○×町 123
クエリ:○×町-B
name ○×町面積
○×町 345
クエリ:△△町-A
name ○×町面積
△△町 567
クエリ:△△町-B
name ○×町面積
△△町 789
が正しいです。スミマセンでした。^^;
name 町面積A 町面積B
○×町 123 345
△△町 567 789
○△町 698 423
というようにできれば、と思っています。
No.5
- 回答日時:
補足の、
クエリ:○×町-A
name ○×町面積
○×町 123
クエリ:○×町-B
name ○×町面積
○×町 345
クエリ:△△町-A
name ○×町面積
○×町 567
クエリ:△△町-B
name ○×町面積
○×町 789
は、
クエリ:○×町-A
name ○×町面積
○×町 123
クエリ:○×町-B
name ○×町面積
○×町 345
クエリ:△△町-A
name ○×町面積
△△町 567
クエリ:△△町-B
name ○×町面積
△△町 789
ではないのですか?
また、補足のデータが少ないので、データが増えたとき
name 町面積A 町面積B
○×町 123 345
△△町 567 789
がどのように変化するのかわからないので、
補足の各クエリのデータを3つくらい増やして、
まとめたデータがどのようになればいいのか
示してみてください。ある程度データがあれば
出来るか出来ないかがわかります。
No.4
- 回答日時:
クエリは仕組みであって、結果は具体的に見えているものの、ファイルになっていない。
クエリをテーブル化する操作があるので一旦ファイルにして統合する方法もある。
またファイル・テーブルをVBAなどで統合するなら出来る。
ーー
(1)少ない(20-30までか)町村数なら、SQLビューのSQL文の中に条件で IN (・・・)
に羅列する。SQL分の書き換えになります。
(2)SQL文の条件をORで書き連ねて結ぶ。
またはデザイングリッドで条件にOrで超尊町村数だけ書き連ねる
(3)同じようなことでUNION句を使いSQL文を書き連ねる
SQL UNIONで照会
http://sql.1keydata.com/jp/sql-union.php
SQL INで照会
http://sql.1keydata.com/jp/sql-in.php
ーーー
多くなれば、これら条件をその都度プログラムでセットし直してプログラムで実行する。
または検索プログラムで、該当結果を1つのファイルに累積していく。
ーー
>Access初心者です、なら後半のプログラムは無理として、SQL文を変更書き込みも出来るかな。
スミマセン。
本当に初心者ですので、書いていただいたことについて行けませんでした。
また、もう少し理解が深まったら、書いていただいたこと見直してみようと
思います。
ご回答ありがとうございました。
No.3
- 回答日時:
もう一度訂正。
何度もすみません。SELECT クエリ○×町.name, [クエリ○×町]![○×町面積] AS 町面積
FROM クエリ○×町
UNION SELECT クエリ△△町.name, [クエリ△△町]![△△町面積] AS 町面積
FROM クエリ△△町;
です。
FROM ○×町
ではなく、
FROM クエリ○×町
でした。
この回答への補足
以下の方法もご存知でしょうか?
クエリ:○×町-A
name ○×町面積
○×町 123
クエリ:○×町-B
name ○×町面積
○×町 345
クエリ:△△町-A
name ○×町面積
○×町 567
クエリ:△△町-B
name ○×町面積
○×町 789
これを以下のようにまとめる方法があるでしょうか?
name 町面積A 町面積B
○×町 123 345
△△町 567 789
No.2
- 回答日時:
#1です。
クエリのSQL文の中で、
SELECT クエリ○×町.name, [クエリ○×町]![○×町面積] AS 町面積
FROM ○×町
UNION SELECT クエリ△△町.name, [クエリ△△町]![△△町面] AS 町面積
FROM クエリ△△町;
以下の、
[クエリ△△町]![△△町面]
のところを
[クエリ△△町]![△△町面積]
にしてください。「積」が抜けていました。したがって、
SELECT クエリ○×町.name, [クエリ○×町]![○×町面積] AS 町面積
FROM ○×町
UNION SELECT クエリ△△町.name, [クエリ△△町]![△△町面積] AS 町面積
FROM クエリ△△町;
になります。このクエリの作り方は、新しいクエリを
デザインビューで開き、SQLビューに変更して、
上記のSQL文をコピーし、貼り付け適当な名前で
保存します。
No.1
- 回答日時:
クエリ名が
クエリ:○×町
と
クエリ△△町
のように統一されていないので、こちらで
それぞれ、
クエリ○×町
クエリ△△町
としました。ユニオンクエリを使います。
SELECT クエリ○×町.name, [クエリ○×町]![○×町面積] AS 町面積
FROM ○×町
UNION SELECT クエリ△△町.name, [クエリ△△町]![△△町面] AS 町面積
FROM クエリ△△町;
二つのクエリのそれぞれの面積のところを町面積
に名前を付け替えて表示し、二つのクエリを
結合させます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) お世話になります ACCESSを使用しています 下記のクエリデータ(1)があります 商品名 行数 A 1 2022/09/05 08:52
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- MySQL 日本の全市区町村を人口密度が低い順に並べなさい。なお、人口密度とは、総人口(=男性数+女性数)を面積 2 2023/06/16 17:10
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- MySQL 「都道府県の面積の大きい順に並べる」このクエリselect構文を教えてください! テーブル名は'地理 1 2023/07/05 17:11
- MySQL クエリを教えてください select構文です 「各郡および各支庁の総面積の一覧。大きい順に示せ。」 2 2023/07/06 22:19
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスのエラー「クエリには...
-
EXCELの外部データ取得ができない
-
yes/no型のチェックができない...
-
Access 複数のクエリの結果を...
-
AccessでSQL結果を直接csvに書...
-
【Access2003 VBA】クエリをエ...
-
アクセスで空白がグループ化さ...
-
Access 特定の条件下で、メッ...
-
Excel Powerクエリーの質問。あ...
-
access追加クエリ実行時の重複...
-
ACCESS テーブル内の列...
-
Excel「外部データの取り込み」...
-
ログイン画面後のページの表取...
-
Me.FilterOn = True は先でも後で
-
レコード件数をファイル名にし...
-
Accessで納品書を作りたいです
-
Access複数のクエリをExcelの1...
-
ACCESSでメッセージにクエリ結...
-
Access 不一致クエリ(たぶん)
-
Accessでユニオンクエリを作成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスのエラー「クエリには...
-
EXCELの外部データ取得ができない
-
Access 複数のクエリの結果を...
-
yes/no型のチェックができない...
-
access追加クエリ実行時の重複...
-
AccessでSQL結果を直接csvに書...
-
ACCESSのフィールドの表示順が...
-
ACCESS テーブル内の列...
-
アクセスで空白がグループ化さ...
-
ACCESSでメッセージにクエリ結...
-
ログイン画面後のページの表取...
-
Accessで進行状況インジケータ...
-
Access複数のクエリをExcelの1...
-
アクセス ADO レコードの件数...
-
エクセルからアクセスの更新ク...
-
Me.FilterOn = True は先でも後で
-
ACCESSで追加クエリを連続実行...
-
Access2000で抽出したデータに...
-
Access 0で除算(並べ替...
-
Accessのエラーについてです。
おすすめ情報