質問 |
||
| 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 |
|
| |
| この回答への補足 | ご回答ありがとうございます。 仮テーブルを作成して操作する事ですよね。 わがままで、すみませんが、仮テーブルを使わずに 操作する事は、不可能なのでしょうか? |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |