![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.6ベストアンサー
- 回答日時:
何度も失礼します。
余計なお世話かもしれませんが。クエリを選択制にしたいということですが、クエリからクエリを作成している以上、選択制には出来ないのではないですか?
例えばテーブル1からIDが10以上のデータを抽出してクエリ1を作成してそれを基にふり仮名が「ア」で始まるデータを抽出してクエリ2を作成し、それを基に住所が東京都のデータを抽出したクエリ3を作成したとします。でもある時、東京都在住の人全員のデータが欲しくなったとします。その場合、クエリ3の条件だけ選択したいと言っても、クエリ2を基に作っているので、クエリ3を利用することは出来ず、もう一つテーブル1を基にクエリ3と同じ抽出条件のクエリ4というクエリを作成する必要があります。なので、20個のクエリの組み合わせによって変化させるのなら、ものすごい数のクエリが必要になります。UNIONクエリもクエリからクエリを作成されている以上、うまくいかないと思いますよ。
20個のクエリにそれぞれ10個の条件があった場合、200の条件で抽出することになります。どういう状況かわかりませんが、本当にそれだけの条件を作ったクエリが必要ですか?パラメーターなどで、抽出条件を入力できるように作ったほうが良くはないですか?
この回答への補足
ご意見ありがとうございます。
クエリは、抽出条件用のデータを作成する為にひとつ、それを元に抽出したデータがひとつ。のシンプルなものです。2重3重となっているわけではありません。この抽出条件用のクエリにかなりややこしい条件をつけていますので、条件欄の文字数オーバーとかになるほどです。単純にテキストを検索して抽出というのではなく、計算式等を入れた新しいフィールドに対してさらに複雑な条件をかける・・・というような感じです。
私がイメージしていたのはフォームにてチェックボックスをクエリ分作り、チェックが入ったクエリのみデータを抽出し、元テーブルから除外し、残りのデータを表示する。これをボタンひとつで。が希望でした。
ユニオンクエリは画期的だなぁと思ったのですが、一度データを作って終わり、ではなく毎回元データは変化しますのでやはりクエリを選択制にするってところで難しいかなぁと・・・。
中途半端な知識で余計ややこしくさせてしまいすみません。。。
No.5
- 回答日時:
削除は関係ないですよね。
元データから選択クエリで抽出したいだけで元データを消したいわけではないですよね。削除クエリを実行("DELETE FROM~" )すると元データのテーブルからデータが消えてしまいますよ。誤解を招くので削除という言葉は使わないほうが良いでしょう。>私が出来なかっただけかもしれませんが
多分そうだと思われます。そちらの方を質問されてクエリを書き直されたほうが良いと思います。クエリを複数かませると処理速度が低下したりします。これからも色々お作りになると思いますので、そういうものをどんどん増やし、つじつまを合わせるやり方を考えるより、正しい作り方を覚えられてスマートな形の物に作り直された方が宜しいかと思います。
クエリを書き直せば、特にVBAを使用する必要もないように思われます。コマンドボタン押下でクエリを開くようにマクロを組めば良いだけです。
ご意見ありがとうございます。
クエリを分けている理由は、そのクエリを選択制にしたいということもあり、わかりやすいように個別にしていました。
実際にはクエリは20個あるんです。これを一つにまとめるのは至難の業ではないかと…演算フィールドも沢山あるので、何十列となり、ちょっとこんがらがってしまいそうです。。。
ありがとうございました。
No.4
- 回答日時:
No.2
- 回答日時:
VBA が全く判らなくても、コピペ位はできるでしょう。
VBA が全く判らなくても、フォームにコマンドボタンは配置できるでしょう。
<仕入記録>
ID____商品マスター_ID_仕入数量_仕入単価
1_____商品A______________10___________\1,000
2_____商品A______________20___________\1,000
3_____商品B______________15___________\1,500
このようなテーブルがあったとします。
クエリ1=SELECT 仕入記録.*, * FROM 仕入記録;
というクエリを用意します。
もちろん、このクエリは<仕入記録>を全て表示します。
<クエリ1>
ID____商品マスター_ID_仕入数量_仕入単価
1_____商品A______________10___________\1,000
さて、クエリ1をフォームのコマンドボタンで表示するとこのようになりました。
仕入数量=20
仕入単価=1500
を削除した結果を表示しているからです。
Private Sub コマンド0_Click()
On Error Resume Next
CnnExecute ("DELETE FROM 仕入記録 WHERE 仕入単価=1500;")
CnnExecute ("DELETE FROM 仕入記録 WHERE 仕入数量=20;")
DoCmd.OpenQuery "クエリ1"
End Sub
ところで、フォームのコマンドボタンの書いたVBAのコードはこのように実に簡単なものです。
DELETE文は、質問者が作成されたクエリをコピーされても動作します。
クエリをSQLビューで表示すれば、クエリはSQL文の形で表示されます。
どうでしょう、この位のコードですと書けるのじゃないでしょうか?
なお、CnnExecute は、後で補足します。
この回答への補足
ご回答ありがとうございます。CnnExecuteの意味はさっぱりなのですが、この処理をクエリ1、クエリ2というように連続させる場合はどのようになるのでしょうか?
それと、ずーずーしいのですが、たとえば「テキストBOX1」に"1"を入力したらクエリの1を実行…とする場合のIF文もできれば教えていただきたいのですが…。
No.1
- 回答日時:
ごめんなさい。
やりたいことが解りかねます。元データを削除したいのですか?それとも、3つの条件でデータを抽出したいだけでしょうか?どちらにしても、3つのクエリの意味がわかりません。1つのクエリに3つの条件を指定すれば良いのでは?
この回答への補足
説明不足ですみません。ひとつのクエリで3つの条件を指定すれば…そうなのですが、条件用のクエリをそれぞれ間に挟んでおり、一度に指定するのは出来ませんでした。(私が出来なかっただけかもしれませんが)
削除用のデータをクエリで3つ用意して、それを除いたデータを元テーブルから抽出したいのです。
そして、そのクエリ3つのうち、削除したいクエリを選択できるようにしたいと思っています。
例えば、クエリの1と3にを指定した場合はクエリの2を無視してデータを抽出する…というような仕組みです。
VBAのことはさっぱりですが、これをボタン一つで処理出来れば、と思いました。
このような説明で分かってもらえたでしょうか?無茶苦茶なこと言っていたら申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Access(アクセス) お世話になります ACCESSを使用しています 下記のクエリデータ(1)があります 商品名 行数 A 1 2022/09/05 08:52
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- Excel(エクセル) Excel Powerクエリーの質問。あるクエリに一致する行だけ除外できますか? 1 2022/08/22 13:48
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- その他(データベース) 20万行あるデータを動かしたい 2 2023/06/13 15:21
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスのエラー「クエリには...
-
EXCELの外部データ取得ができない
-
Accessで進行状況インジケータ...
-
yes/no型のチェックができない...
-
Access 複数のクエリの結果を...
-
AccessでSQL結果を直接csvに書...
-
Accessのエラーについてです。
-
アクセスでクロス集計をレポー...
-
Access2000で抽出したデータに...
-
Access 特定の条件下で、メッ...
-
ログイン画面後のページの表取...
-
エクセルに外部データの取り込...
-
ACCESSのフィールドの表示順が...
-
エクセルからアクセスの更新ク...
-
アクセスのレベルアップ方法
-
ACCESSでメッセージにクエリ結...
-
Accessクエリの本でおすすめな...
-
エクセルのWEBクエリとアク...
-
ACCESS レポートをテーブルへ
-
【Access2003 VBA】クエリをエ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスのエラー「クエリには...
-
EXCELの外部データ取得ができない
-
yes/no型のチェックができない...
-
access追加クエリ実行時の重複...
-
AccessでSQL結果を直接csvに書...
-
Access 複数のクエリの結果を...
-
ACCESSのフィールドの表示順が...
-
アクセスで空白がグループ化さ...
-
Accessで複数(200件程)の置換
-
Accessで進行状況インジケータ...
-
ログイン画面後のページの表取...
-
Accessのエラーについてです。
-
ACCESSでメッセージにクエリ結...
-
ACCESS テーブル内の列...
-
Access2000で抽出したデータに...
-
Me.FilterOn = True は先でも後で
-
Webクエリで取り込みができない...
-
Access複数のクエリをExcelの1...
-
お世話になります ACCESSを使用...
-
Access 0で除算(並べ替...
おすすめ情報