• ベストアンサー

Access 抽出した重複データを一つにしたい。

Access2002 VBA 教えていただけませんか! テーブルのフィールドに[日付]と[品名]があるとします。 ある期間の日付で抽出をした時5件のレコードが抽出されました。 (例)  日付    品名 H14-04-01 プリンター H14-04-02 ハードディスク H14-04-03 モニター  H14-04-04 プリンター H14-04-05 マウス このときの品名を表示したいのですが、重複品名は除いて プリンター ハードディスク モニター マウス とするにはどうすればいいでしょう?

質問者が選んだベストアンサー

  • ベストアンサー
  • TMINET
  • ベストアンサー率32% (45/140)
回答No.3

ふたたび回答します。 フォームに表示するためだけの抽出であれば、前回と同様にGROUP BYやDISTINCTで 重複しないSQLを生成するのがレスポンス的にも早いです。 あくまで抽出は全レコードというのであれば、ORDER BYでソートして ループ内でブレイク毎に配列にセットされてはいかがでしょうか。

siba10
質問者

お礼

ご回答有難うございます。 とりあえずフォームで表示するだけですので GROUP BY を使うことで解決しました。

その他の回答 (2)

  • TMINET
  • ベストアンサー率32% (45/140)
回答No.2

クエリーですとメニューバーの表示(V)に集計(O)という項目があります。 これにチェックすると、「集計:グループ化」と下のセルに追加されます。 これで同じ内容のものは表示されません。 ちなみに、このテーブルに「金額」などがあれば「集計:合計」とすれば 同じ品名のものの金額の計が得られます。 SQLビューに切り替えて生成されたSQL文字列をVBAで使用されてはいかが でしょうか。 もうひとつの方法は SELECT distinct テーブル.品名 FROM テーブル; と、distinctキーワードを追加することで重複を避けることができます。

siba10
質問者

補足

ご返事有難うございます。 まったく私の説明不足ですので、質問を書き直します。 次のようなテーブル(テーブル名:明細)があります。 (例) 顧客ID 貸出本タイトル   返却予定日  1  図解アクセス   H14年4月1日  2  VBA入門    H14年5月1日  1  図解エクセル   H14年5月1日  4  やさしいワード  H14年4月1日  3  アクセス解説   H14年4月1日  2  アクセス裏技   H14年5月1日  4  図解ワード    H14年4月1日  1  アクセス2000 H14年5月1日  3  ワードマスター  H14年5月1日 返却予定日がH14年5月1日の顧客を抽出します。 Dim db As DAO.Database Dim rs As DAO.Recordset Dim mySQL As String Set db = CurrentDb() mySQL = "SELECT * FROM 明細 " _ & "WHERE 返却予定日 = #" & _ Format$(Me!txtKey, "yyyy-mm-dd") & "#;" Set rs = db.OpenRecordset(mySQL, dbOpenDynaset) (注)txtKeyはフォームの抽出条件を入力するテキストボックスです Dim ID(1 To 100) AS Integer Dim i AS Integer i = 0 Do Until rs.EOF i = i + 1 ID(i) = rs![顧客ID] rs.MoveNext Loop このとき抽出された顧客ID次の通りなりますね。 変数  顧客ID ID(1)→ 2 ID(2)→ 1 ID(3)→ 2 ID(4)→ 1 ID(5)→ 3 これを抽出された顧客IDをフォームで表示するとき H14年5月1日の返却予定者は    顧客ID     2     1     2     1     3 と、表示するのではなく    顧客ID     2     1     3 と、したいのです。 長文になり申し訳ありませんがご指導ください。

  • KODAMAR
  • ベストアンサー率26% (267/1006)
回答No.1

この抽出はクエリーでやっているのですか? プリンターがふたつあるから重複しないようにひとつだけ表示したい、とのことですが、日付が違うので別データとして扱われます。 クエリーで、日付を入れなければできるかと思いますが。。。

siba10
質問者

補足

説明不足で申し訳ありません。 質問を書き直しましたのでよろしくお願いします。

関連するQ&A

専門家に質問してみよう