次の方法で共有


Access アプリでマクロを使用してビューをフィルター処理する

RequeryRecords マクロ アクションとデータ マクロを使用して、Access アプリでビューをフィルター処理する方法について説明します。

重要

現在 Microsoft では、SharePoint での Access Web アプリケーションの作成や使用は推奨していません。 代わりに、web およびモバイル デバイス用のコードのないビジネス ソリューションを構築するマイクロソフトの PowerAppsを使用して検討してください。

Access アプリの既定のリスト ビューを使用すると、フィールドに含まれている値の問題をフィルター処理できます。 値の一致ではなく、一連の条件に基づいてビューをフィルターする状況も考えられます。 そのためには、マクロを作成する必要があります。 この記事では、ビューをフィルター処理して、期限を過ぎているタスク、または次の 7 日以内が期限のタスクをフィルター処理するマクロを作成する方法を示します。

Access でアプリを構築するための前提条件

この例の手順を実行するには、次のものが必要です。

  • Access 2013
  • SharePoint 2013 開発環境

注:

SharePoint 開発環境のセットアップの詳細については、「SharePoint 2013 の一般的な開発環境の設定」を参照してください。 Access 2013 の取得の詳細については、「ダウンロード」および「SharePoint 2013」についても「ダウンロード」を参照してください。

アプリを作成する

たとえば、ビジネスのタスクを追跡する Access アプリを作成するとします。 テーブルとビューの作成を始める前に、スキーマ テンプレートがないかどうかを探す必要があります。

タスク追跡アプリを作成するには

  1. Access を開いて、[ カスタム Web アプリ] を選択します。

  2. アプリの名前と、Web 上のアプリの場所を入力します。 [ 場所] リストから場所を選択し、[ 作成] を選択することもできます。

  3. [ 検索] ボックスに「 タスク 」と入力し、Enter キーを押します。

    タスクを追跡するのに役立つ可能性があるテンプレートのリストが図 1 に示されています。

    図 1. タスクに関する検索に一致するテンプレート

    問題の検索に一致するテンプレート 問題の

  4. [タスク] を選択します。

Access は、一連のテーブルとビューを作成します。

アプリに、いくつかのサンプル タスクと社員を入力します。 そのためには、[ アプリの起動] を選択して、Web ブラウザーでアプリを開きます。 各タスクの [ 期限 ] フィールドに値を入力します。 完了したら、Access に戻ります。

カスタマイズを計画する

これで、アプリにはいくつかのタスクが含まれました。 既定のビューでは、ビューに表示されているフィールドに格納されている項目を使用してタスクを検索できます。 たとえば、優先度の高い問題や、進行中の問題を検索できます。 来週が期限のアクティブな問題を表示して、作業の優先度を設定するとします。 そのためには、ユーザー インターフェイス (UI) マクロを作成する必要があります。

ビューのフィルター処理に使用できる UI マクロ コマンドは、RequeryRecords マクロ アクション (Access カスタム Web アプリ) です。 RequeryRecords マクロ アクションは、SQL WHERE 句の形式で用意されている Where 引数に基づいてビューをフィルター処理します。 ビューをフィルター処理するには、特定の形式で複数の情報を指定する必要があります。

関連のある情報は次のとおりです。

  • 比較する 1 つ以上のフィールド
  • 今日の日付を参照する方法
  • 今日の日付に関連する特定の日付を参照する方法
  • 進行中のタスクを確認する方法

[ 期限 ] フィールドは、タスクの期限に関する情報を提供します。 [状態] フィールドでは、各タスクの状態情報を指定します。 マクロでフィールドを参照するには、[テーブル名].[フィールド名] の形式を使用します。 [期限] フィールドを参照するには [タスク].[期限] を使用し、[ステータス] フィールドを参照するには [タスク].[ステータス] を使用します。

Today 関数 (Access カスタム Web アプリ) 関数は今日の日付を返します。 DateAdd 関数 (Access カスタム Web アプリ) 関数を使用すると、指定した日付から特定の日数が経過した後の日付を計算できます。

[ ステータス ] フィールドには、いくつかの可能な日が含まれます。 値 Completed は、タスクがアクティブでなくなったことを示します。

これらの情報は、次の SQL の WHERE 句に組み合わせることができます。

[Tasks].[Due Date]<DateAdd(Day,7,Today()) AND [Tasks].[Status]<>"Completed"

この SQL WHERE 句はマクロで使用し、ビューをフィルター処理して、次の 7 日以内が期限のアクティブな問題、または期限が過ぎているアクティブな問題を表示できます。

UI マクロを実行するには、ビューで発生する項目またはイベントにそのマクロが割り当てられている必要があります。 操作バー は、ビューにカスタム コマンドを追加するための便利な場所です。 操作バー はカスタマイズ可能なツールバーで、各ビューの上部に表示されます。 既定では、 操作バー には追加、編集、保存、削除、および編集の取り消しを行うためのボタンが含まれます。 ビューのフィルター処理など、カスタム アクションを実行するボタンを追加できます。

指定された条件を満たすレコードがビューに含まれている場合、 RequeryRecords はビューをフィルター処理します。 ただし、条件を満たすレコードがビューに含まれていない場合、新しい空のレコードが表示されます。 次の週が期限であるタスクがない場合に空のレコードを表示しない場合は、 RequeryRecords マクロ アクションを呼び出す前にタスクを確認するメソッドを見つける必要があります。 そのためには、条件を満たすレコードを確認するデータ マクロを作成します。

UI マクロは、次の週が期限であるタスクの検索を試みるデータ マクロを呼び出します。 データ マクロは、タスクを見つけるとアプリをカスタマイズします。

アプリをカスタマイズする

これでカスタマイズを決定したので、それらを実装します。 最初にデータ マクロを作成します。 一部のデータ マクロはテーブルに直接割り当てられます。 ただし、このデータ マクロはスタンドアロンのデータ マクロです。

データ マクロを作成するには

  1. Access でアプリを開きます。

  2. [ 作成] グループで、[ 詳細設定]、[ データ マクロ] の順に選択します。

    マクロのデザイン ビューに空白のデータ マクロが開かれます。

  3. [ 新しいアクションの追加] リスト ボックスから [ レコードの参照] を選択します。

  4. [ 参照するレコードが含まれるテーブル/クエリ] リスト ボックスで、[ タスク] を選択します。

  5. [ 条件式] ボックスに「 [タスク].[期限]<DateAdd(Day,7,Today()) AND [タスク].[ステータス]<>"Completed" 」と入力します。

  6. [ 新しいアクションの追加] リスト ボックスから [ 戻り変数の設定] を選択します。

    注:

    2 つの [新しいアクションの追加] リスト ボックスが表示されます。1 つは LookupRecord ブロック内にあり、もう 1 つは LookupRecord ブロックの外側にあります。 図 1 に示すように、LookupRecord ブロック内の [新しいアクションの追加] リスト ボックスを選択する必要があります。

    図 1. [新しいアクションの追加] リスト ボックス

    [新しいアクションの追加] ドロップダウンの [

  7. [名前] ボックスに「TaskFound」と入力します。

  8. [ ] ボックスに「 はい 」と入力します。

  9. [ 上書き保存] を選択します。 [ マクロ名] ボックスに「 TaskDueSoon 」と入力し、[ OK] を選択します。

    マクロは、図 2 のようになります。

    図 2. TasksDueSoon データ マクロ

    TasksDueSoon データ マクロ

  10. マクロのデザイン ビューを閉じます。

これで、操作バーにカスタム ボタンを追加する準備ができました。

操作バーにカスタム ボタンを追加するには

  1. [ タスク ] テーブルを選択します。 これにより、[タスク リスト] フォームが選択されます。

  2. ビュー セレクターで [ リスト ] を選択し、[ 設定/アクション] アイコン、[ 編集] の順に選択します。

    ビューは、デザイン ビューで開かれます。

  3. これで、操作バーにカスタム ボタンを追加する準備ができました。 そのためには、図 3 に示すように [ ユーザー設定操作の追加] を選択します。

    図 3. [ユーザー設定操作の追加] ボタン

    [カスタム アクションの追加] ボタン

    新しい操作は、星形のアイコンが付いたボタンとして表示されます。図 4 を参照してください。

    図 4. [新しい操作バー] ボタン

    [新しいアクション バー] ボタン [

  4. カスタムの操作バー ボタンを選択してから、[データ] アイコンを選択します。

    [ データ] ダイアログ ボックスが表示されます。

  5. [ コントロール名] ボックスに「 FilterTasks 」と入力します。

  6. [ ツールヒント] ボックスに、「 期限が過ぎたタスクまたは次の週が期限のタスクを表示します 」と入力します。

これで、ビューをフィルター処理する UI マクロを作成する準備ができました。

ビューをフィルター処理する UI マクロを作成するには

  1. [ データ] ダイアログ ボックスで、図 5 に示すように [ クリック時] を選択します。

    図 5. [データ] ダイアログ ボックス

    [データ] ダイアログ ボックス [

    マクロのデザイン ビューに空白の UI マクロが開かれます。

  2. [新しいアクションの追加] リスト ボックスから [RunDataMacro] を選択します。

  3. [マクロ名] ボックスに「 TasksDueSoon 」と入力します。

    [ ローカル変数の設定] ボックスに「 FilterRecords 」と入力します。

    データマクロの実行 アクションは、以前に作成した TasksDueSoon データ マクロを呼び出し、その結果を FilterRecords という名前の変数に格納します。

  4. [ 新しいアクションの追加] リスト ボックスから [ If ] を選択します。

  5. [ 条件] ボックスに、「 [FilterRecords]="Yes" 」と入力します。

  6. [ 新しいアクションの追加] リスト ボックスから [ レコードの再クエリ ] を選択します。

    注:

    [ 新しいアクションの追加] リスト ボックスが 2 つ表示されます。1 つは If ブロック内に、もう 1 つは If ブロックの外側に表示されます。 図 6 に示すように、If ブロック内の [新しいアクションの追加] リスト ボックスを選択する必要があります。

    図 6. [新しいアクションの追加] リスト ボックス

    [新しいアクションの追加] ドロップダウン [

  7. [Where] ボックスに「[タスク].[期限]<DateAdd(Day,7,Today()) AND [タスク].[状態]<>"Completed"」と入力します。

  8. [ Order By] ボックスに「 [期限] 」と入力します。

  9. 図 7 に示すように、[ 新しいアクションの追加] ボックスの右に表示される [ その他を追加] リンクを選択します。

    図 7. [その他を追加] リンク

    [Else の追加] リンク [

    Else 句が If ブロックに追加されます。

  10. [新しいアクションの追加] リスト ボックスから [MessageBox] を選択します。

  11. [ メッセージ] ボックスに「 期限を過ぎているタスクや、次の 7 日以内が期限のタスクはありません 」と入力します。

  12. [保存] を選択します。

    マクロは、図 8 のようになります。

    図 8. ビューをフィルターする UI マクロ

    ビュー UI マクロをフィルター処理してビューを

  13. マクロのデザイン ビューを閉じます。

この時点で、タスク リスト ビューをフィルター処理して緊急のタスクを表示する UI マクロを作成しました。 フィルターを削除するメソッドを提供せずに、ビューをフィルター処理された状態のままにしておくことはお勧めしません。 そのためには、別の操作バー ボタンと UI マクロを追加します。

フィルターを削除する操作バー ボタンを追加するには

  1. [ ユーザー設定操作の追加] を選択します。

    新しいアクションが、星型のアイコンが付いたボタンとして表示されます。

  2. カスタムの操作バー ボタンを選択し、[ データ] アイコンを選択します。

    [ データ] ダイアログ ボックスが表示されます。

  3. [ コントロール名] ボックスに「 RemoveFilter 」と入力します。

  4. [ ツールヒント] ボックスに、「 ビューに適用されたすべてのフィルターを削除します 」と入力します。

これで、ビューからフィルターを削除する UI マクロを作成する準備ができました。

ビューからフィルターを削除する UI マクロを作成するには

  1. [ データ] ダイアログ ボックスで、[ クリック時] をクリックします。

    マクロのデザイン ビューに空白の UI マクロが開かれます。

  2. [ 新しいアクションの追加] リスト ボックスから [ レコードの再クエリ ] を選択します。

    今回は、[ If] ボックスと [ Order By] ボックスを空にします。 次に、 RequeryRecords アクションがパラメーターなしで呼び出され、すべてのフィルターがビューから削除されます。

  3. [保存] を選択します。

  4. マクロのデザイン ビューを閉じます。

  5. [タスク] ビューを閉じます。 変更内容の保存を求めるプロンプトが表示された場合、[ はい] を選択します。

カスタマイズをテストする準備ができました。 [ アプリの起動] を選択して Web ブラウザーでアプリを開き、カスタムの FilterTasks 操作バー ボタンを選択します。 期限が過ぎているタスク、または次の 7 日以内が期限のタスクが表示されます。 アプリに緊急のタスクが含まれていない場合は、メッセージが表示されます。

まとめ

UI マクロで RequeryRecords マクロ アクションを使用し、選択する条件に基づいてビューをフィルター処理できます。 目的の動作に応じてデータ マクロを作成して、レコードが条件を満たすことを確認してから、 RequeryRecords マクロ アクションを使用できます。

関連項目