Microsoft Access Club >VBAのTips解説 >このページ >次頁 < 前項  サイト内検索
 

DAOとSQLを用いて重複データの表示、非表示を切り替える方法 : VBAのTips解説



ALL句<オール>
DISTINCT句<ディスティンクト>

ALL句とは、同じフィールド内に重複したレコードがある場合でも、そのままデータ表示を行うSQL構文です。DISTINCT句とは、同じフィールド内に重複したレコードがある場合は、最初のレコードのみ表示し、他のレコードを非表示にするSQL構文です。なお、指定しない場合は、ALL句が既定値になります。

  • 書式
[ALL句]
SELECT ALL filename 〜
[DISTINCT句]
SELECT DISTINCT filename 〜
  • 引数

[ALL句]

引数 意味 指定

fieldname

フィールド名を指定します 省略不可

[DISTINCT句]

引数 意味 指定

fieldname

フィールド名を指定します 省略不可

関連項目

  1. CurrentDb(DAO)
  2. Deleteメソッド(DAO)
  3. OpenQueryメソッド
  4. ORDER BY句

事例 ) オプショングループを用いて、重複した支払先の表示、非表示を切り替える

オプショングループを用いて、重複した支払先の表示、非表示を切り替えます。

  1. 支払先フィールドを持つ支払管理テーブルを作成します。
  2. 連結フォームを作成します。
  3. 実行するコマンドボタンを作成します。
  4. ALL、DISTINCTを切り替えるオプショングループを作成します。

コマンドボタンクリック時イベントプロシージャの作成

コマンドボタンクリック時イベントプロシージャを以下のように作成します。

Private Sub 実行_Click()

   On Error GoTo エラー

   Dim db As DAO.Database
   Dim qdf As DAO.QueryDef
   Dim mySQL As String
   Dim strName As String
   Dim strChoice As String

   Set db = CurrentDb
   strName = "Q_支払管理"

   If Me.オプション = 1 Then '--- A
      strChoice = "ALL"
   Else
      strChoice = "DISTINCT"
   End If

   mySQL = "SELECT " & strChoice & " 支払先 FROM 支払管理 "
   mySQL = mySQL & "ORDER BY 支払先;"
   Set qdf = db.CreateQueryDef(strName, mySQL)
   DoCmd.OpenQuery qdf.Name '--- B

   db.Close: Set db = Nothing

   Exit Sub

エラー:

   If Err.Number = 3012 Then
      db.QueryDefs.Delete strName
      Resume
   Else
      MsgBox Err.Number & " : " & Err.Description
   End If

End Sub
解説
  1. オプショングループの戻り値によって、ALL句、DISTINCT句を切り替えます。
  2. クエリーを実行します。

動作確認

  1. フォームをビューモードで開きます。
  2. オプショングループでDISTINCTし、[実行]ボタンをクリックします。

  1. 重複した支払先が非表示になり、クエリーが開きます。

ページの先頭へ 前ページへ戻る

 


DAOとSQLを用いて重複データの表示、非表示を切り替える方法 : VBAのTips解説


 

-Microsoft Access Club-

注目のモンスター専用サーバーからお買い得プランまで幅広くそろえています。cPanel、PLESK、WEBMINまでお任せ下さい。
注目のモンスター専用サーバーからお買い得プランまで幅広い。
cPanel、PLESK、WEBMINまでお任せ下さい。