Access 2007のクエリを自動化する(1つの基準を変更する)


1

そのため、6つのクエリがあり、毎月末にそれらをすべて1回実行したいと思います。 (私はSQLについて少し知っていますが、それらは単にAccessのデザインビューを使って構築されています)。そのため、今後数日のうちに、5月に6つのクエリを実行することになるでしょう。終了した月のデータだけが必要なので、クエリでは月の名前としてCriteriaが設定されています(例:5月)。今、毎月これらすべてを変更するのはそれほど時間がかかりませんが、これを自動化する方法はありますか?現在のところ、これらはすべて4月に設定されており、数日で実行するときにはすべて5月に変更したいと思います。そして毎月、私は月を一度だけ(おそらくあなたがより良い方法を知っているならばフォームまたはどこかにテキストボックスに)タイプして、それをすべて手動で開かずにスクロールしてスクロールさせたい。正しいフィールドに移動して、Criteriaを変更します。

注意(VBAについて) :私はVBAの基本を知っているのでExcel VBAを使ったことがありますが、(コードを何度か見ること以外に)Accessに固有のことは実際にはわかりません。そして、他の人はこれをAccess VBAについて何も知らない人が使うでしょう。だから、私は私が似たような発見したと思います 質疑応答 それはVBAでこれを行うことができますが、私はむしろそれを何か他の方法でしたいです。後でAccess VBAをまったく知らない人が後でクエリをわずかに再設計する必要がある場合、それが可能であればVBAを含まないソリューションを用意するのがいいでしょう。

回答:


2

実行時にクエリに月を要求させる簡単な方法があります。クエリで、[月を入力]を現在の月の名前と同じ場所に置きます。

enter image description here

クエリが実行されると、月を入力するためのダイアログボックスが表示されます。あなたが望む任意のテキストを角括弧に入れることができます - それは "月"を言う必要はありません。これは単にダイアログボックスが何を言うのかを定義します。この手法は「パラメータクエリ」と呼ばれます。

enter image description here

単一のステップで6つすべてのクエリを実行するにはVBAコードが必要ですが、非常に単純なコードです。エンドユーザーはVBAについて何も知る必要はありません。フォームを開いてボタンをクリックするだけです。

フォームを作成し、その上にボタンを1つ配置します。そのボタンのプロパティリストで、[イベント]タブを選択してから[クリック時]イベントを選択します。 On Clickイベントの[...]ボタンをクリックします。

enter image description here

これにより、カーソルが正しい場所(Private Sub Command0_Click)にあるVBAコードウィンドウが開きます。ここで、Command0はボタンの名前です。示されているようにコードを入力してください...

enter image description here

クエリを正しい名前に置き換えて、必要な回数だけコード行を繰り返します。フォームを開いてボタンをクリックすると、すべてのクエリが一度に実行されます。

次のステップ

最後の改善は、パラメータを1回入力して、それをすべてのクエリに自動的に適用させることです。これにはいくつかの手順が必要です。

VBAコードウィンドウで、コード「Module」を作成します。ウィンドウの「プロジェクト」ペインを右クリックして、「挿入/モジュール」を選択します。

enter image description here

新しいモジュールに次のコードを追加します。

enter image description here

gstrMonthは、月の名前を保持するためのグローバル変数文字列です。 GetMonth関数はクエリでその値を取得するために使用されます。

今すぐForm1コードをこれに変更します。

enter image description here

サブ "AskForMonth"は、月名を入力するためのユーザーのためのダイアログボックスを表示します。その入力は、gstrMonth変数に割り当てられています。

enter image description here

Command0(ボタン)コードでは、クエリが実行される前にAskForMonthを追加します。もう一度、正しいクエリ名で各クエリに対して "DoCmd"行を繰り返します。

最後のステップは、クエリ内のパラメータを関数 "GetMonth"への呼び出しに置き換えることです。クエリ条件で[Enter Month]の代わりに「GetMonth()」を入力します。

enter image description here

これにより、VBAの機能のいくつかを使用してAccessタスクを自動化することをお勧めします。


Dave、詳細な回答をありがとう。最後の段落では「最終ステップ」について説明します。これは私が本当に助けを必要としているものです。質問で提供したリンクに基づいて、SQLステートメント全体をコードに入れ、そこに変数を入れることによって基準を変更できることを知っています。おそらくその値をフォームのテキストボックスから取得します。私の質問は、本質的に、この「最終ステップ」を実行するためのより簡単な方法(VBAでSQLを使用するよりも簡単な方法)があるということです。 Queries( "Query1")、Field( "Month")、Criteria = "May"のような設定はありますか?
Graphth

はい、もっと簡単な方法があります。 SQLをVBAコードに含める必要はありません。私はあなたにその答えを編集するつもりです。
Dave Becker

@グラフィック - これがあなたが探していた答えですか?
Dave Becker

おそらく、試す機会があるまで待たなければならないでしょう。
Graphth

@グラフィック - これはあなたのために働きましたか?
Dave Becker
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.