ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3967669 Accessの帳票フォームで重複データを非表示にしたい
質問者:yuki1422jp 印刷チェック 見積番号B 見積番号C 発注先コード               B-001 C-001 D-001               B-001 C-001 D-001
       B-001 C-002 D-002
       B-001 C-002 D-002

このようなフォームがあります。
これを
印刷チェック 見積番号B 見積番号C 発注先コード               B-001 C-001 D-001

       B-001 C-002 D-002
このようにしたいと思っています。
重複したデータ部分を非表示にしたいと思っています。
印刷チェックの区分は、印刷したいものにチェックをする、
チェックボックスになっているため、
クエリにての操作が出来ません。

どのようにしたら良いのでしょうか?
宜しくお願いします。
困り度:
  • すぐに回答を!
質問投稿日時:
08/04/22 17:08
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.3 見積番号B 見積番号C 発注先コード を持つフィールドのテーブルで
同じ値のものを表示しない方法は、クエリーを作成する際、
クエリーのプロパティの固有の値をはいにしてください。
した場合SQLは
SELECT DISTINCT テーブル1.見積番号B, テーブル1.見積番号C, テーブル1.発注先コード FROM テーブル1;
になります。
固有の値をいいえの場合
SELECT テーブル1.見積番号B, テーブル1.見積番号C, テーブル1.発注先コード FROM テーブル1;
DISTINCTがないところがことなり、あれば同じ値は表示されません。
このクエリーを使って印刷すればよいと思います。
回答者:ganbaro
種類:回答
どんな人:専門家
自信:自信あり
回答日時:
08/04/23 22:35
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答良回答10pt

ANo.2 tab1:

ID__印刷チェック__見積番号B__見積番号C__発注先コード
01__Yes___________B-001______C-001______D-001
02__Yes___________B-001______C-001______D-001
03__Yes___________B-001______C-002______D-002
04__Yes___________B-001______C-002______D-002
05__No____________B-001______C-003______D-003
06__No____________B-001______C-003______D-003

クエリ1:

[UID__UCHeck__見積番号B__見積番号C__発注先コード
02____-1______B-001______C-001______D-001
04____-1______B-001______C-002______D-002
06_____0______B-001______C-003______D-003

クエリ2:

UID___見積番号B__見積番号C__発注先コード
2_____B-001______C-001______D-001
4_____B-001______C-002______D-002

この2つのクエリが考えられます。

SELECT
 MAX(ID) AS UID,
 MAX(印刷チェック) AS UCHeck,
 見積番号B,
 見積番号C,
 発注先コード
FROM tab1
GROUP BY 見積番号B, 見積番号C, 発注先コード;

SELECT
 MAX(ID) AS UID,
 見積番号B,
 見積番号C,
 発注先コード
FROM tab1
WHERE 印刷チェック=True
GROUP BY 見積番号B, 見積番号C, 発注先コード;
回答者:Husky2007
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/04/23 11:08
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.1 フォームの「開く時」のイベントプロシージャで
・作業用テーブルを空にする
・元のテーブルから重複を取り除いたクエリを元に、作業用テーブルにデータを追加する
・作業用テーブルをフォームのレコードソースに設定する
と言う処理をして下さい。

まず、
SELECT 元テーブル.見積番号B,元テーブル.見積番号C,元テーブル.発注先コード FROM 元テーブル GROUP BY 見積番号B,見積番号C,発注先コード;
と言うクエリーを「重複無しクエリー」と言う名前で保存します。

そして、フォームの「開く時」のイベントプロシージャに、以下のコードを書きます。

Private Sub Form_Open(Cancel As Integer)
DoCmd.RunSQL "DELETE * FROM 作業テーブル"
DoCmd.RunSQL "INSERT INTO 作業テーブル ( 印刷チェック,見積番号B,見積番号C,発注先コード ) SELECT FALSE AS 印刷チェック,重複無しクエリー.見積番号B,重複無しクエリー.見積番号C,重複無しクエリー.発注先コード FROM 重複無しクエリー;"
Me.RecordSource = "作業テーブル"
End Sub

あとは「元テーブルではなく、作業テーブルを使って」処理を続けて下さい。
回答者:chie65536
種類:回答
どんな人:一般人
自信:参考意見
回答日時:
08/04/22 17:50
この回答への補足ご回答ありがとうございます。
仮テーブルを作成して操作する事ですよね。
わがままで、すみませんが、仮テーブルを使わずに
操作する事は、不可能なのでしょうか?
この回答へのお礼この回答にお礼をつける(質問者のみ)