モテ期を経験した方いらっしゃいますか?

ACCESSで、テーブル「顧客名簿」から、クエリで条件を抽出し、さらに並び替え、レポート「宛名ラベル」から印刷する業務を行なっています。

いつも、郵便番号順に印刷しているのですが、上2桁が「75」になるものだけを、先にまとめて出し、それに続いて、その他の郵便番号が「000-0001」から「000-0002」…「999-9999」となるように出して欲しいと言われました。

昇順、降順というのは知っていますが、こういう並び方にする事って出来るんでしょうか?

質問者からの補足コメント

  • 素早いご回答ありがとうございます。7桁の数値(もしくは文字列?)に変換したとして「特定の数値(もしくは文字列?)だけを先に並べる」という事は出来ますでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2024/11/09 21:27
  • アドバイスありがとうございます。「郵便番号」フィールドの右に、クエリを使って、「75」に該当するかどうかを判別するための、新たなフィールドを作りました(IFFの条件式に「like "75*"」を入力し、該当する場合にフラグを立てる設定にしています)。

    しかし、クエリのデザインビューでは、新たに作成したクエリの並び替えが出来ないようなんです(パラメータの入力を求められます)。

    宛名ラベルウィザードには、クエリで作成した列の並び替え機能が付いているので、何らかの方法がありそうですが、ウィザードを使わず、それを可能とする方法はないでしょうか。

    No.2の回答に寄せられた補足コメントです。 補足日時:2024/11/10 12:23
  • 上記補足についての訂正です。

    誤:新たに作成したクエリ
    正:クエリを使って新たに作成したフィールド

      補足日時:2024/11/10 12:26

A 回答 (4件)

実際のテーブル名やフィールド名があれば話が早いのですが


ID  名前  郵便番号
1  子  000-0000
2  丑  000-0120
3  寅  150-1000
4  卯  980-2000
5  辰  555-2100
6  巳  438-5987
7  午  750-8888
8  未  012-4444
9  申  751-6666
10  酉  870-6665
11  戌  098-0111
12  亥  222-5455
こんなのがあるとして

クエリのデザインビューで
郵便番号の抽出条件に、like "75*"
並べ替えを、昇順とすれば
ID 名前 郵便番号
7  午  750-8888
9  申  751-6666
の2件となります。
抽出条件に Not Like "75*"
でそれ以外。
この二つをそれぞれのレポートのレコードソースと
すれば良いでしょう。
クエリとレポートを一個だけにすることもできますが
SQL文で、Union All で連結して
75…を先出しするように小細工する必要があります。
ユニオンクエリはデザインビューでは出来ないかと
思います。(当方かなり古いAccess)

SQLビューで作業する必要があります。
SELECT T1.ID, T1.名前, T1.郵便番号, 1 AS 順
FROM T1
WHERE (((T1.郵便番号) Like "75*"))
UNION ALL
SELECT T1.ID, T1.名前, T1.郵便番号, 2 AS 順
FROM T1
WHERE (((T1.郵便番号) Not Like "75*"))
ORDER BY 順, T1.郵便番号;

結果は
ID 名前 郵便番号 順
7  午  750-8888  1
9  申  751-6666  1
1  子  000-0000  2
2  丑  000-0120  2
8  未  012-4444  2
11  戌  098-0111  2
3  寅  150-1000  2
12  亥  222-5455  2
6  巳  438-5987  2
5  辰  555-2100  2
10  酉  870-6665  2
4  卯  980-2000  2

ただ、まとめて印刷すると75*は何処までかな?って
紙をめくって調べる必要があるのでメンドイような気もします。
この回答への補足あり
    • good
    • 3
この回答へのお礼

ありがとうございます! 別々に抽出して並び替える方法で解決しました。

お礼日時:2024/11/11 19:41

クエリの変更は必要ありません。


まだ表示されていませんが上のご質問に回答しました。

表示された グループ化・並べ替えで
・並べ替えの追加
・見逃しがちですが、一番下にある「式」をクリック
・「式」に
 =Nz([郵便番号],"") Like '75*'
 と入力して OKクリック。
・追加した並べ替えを ↑をクリックして一番上に移動

これだけで出来ます。
    • good
    • 1
この回答へのお礼

なるほどです、参考にさせて頂きます!

お礼日時:2024/11/11 19:39

状況が良く分かりませんが、IIF関数の使用は止めて


前回回答のようにクエリの抽出条件で設定しましょう。

パラメータクエリになってしまうのは
フィールド名に間違いがあるとか・・・でしょうが、
そちらのテーブル名・フィールド名・クエリのSQL文
パラメータの内容が不明では答えようがありません。

まずは連結する前のクエリ(75とそれ以外)二つを
完成することが必要です。
郵便番号フィールドに未記入があるかもしれませんので
それ以外の方のSQLのWHERE句は
WHERE (((T1.郵便番号) Not Like "75*")) OR (((T1.郵便番号) Is Null))
のように。(T1は実際のテーブル名にしてね。)
それが出来たら(出来なくても)両方のSQL文をコピーして上げてください。
    • good
    • 1
この回答へのお礼

ありがとうございます!

お礼日時:2024/11/11 19:42

クエリー(SQL)ではできません。



マクロを使って郵便番号のハイフンを抜いた上で7桁の数値としてソートを行わないといけません。
この回答への補足あり
    • good
    • 1
この回答へのお礼

なるほどです。参考にさせて頂きます。

お礼日時:2024/11/11 19:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A