Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2142 / 2272 ツリー ←次へ | 前へ→

【3752】生年月日で並べ替え miya 04/10/21(木) 14:52 質問[未読]
【3753】Re:生年月日で並べ替え hatena 04/10/21(木) 23:03 回答[未読]
【3755】Re:生年月日で並べ替え miya 04/10/22(金) 13:04 質問[未読]
【3761】Re:生年月日で並べ替え hatena 04/10/22(金) 16:53 回答[未読]
【3763】Re:生年月日で並べ替え miya 04/10/22(金) 17:41 質問[未読]
【3765】Re:生年月日で並べ替え hatena 04/10/22(金) 18:33 回答[未読]
【3754】Re:生年月日で並べ替え ちゅう吉 04/10/21(木) 23:15 回答[未読]
【3756】Re:生年月日で並べ替え miya 04/10/22(金) 13:06 質問[未読]
【3758】Re:生年月日で並べ替え ちゅう吉 04/10/22(金) 14:45 回答[未読]
【3764】Re:生年月日で並べ替え miya 04/10/22(金) 17:42 質問[未読]
【3766】Re:生年月日で並べ替え miya 04/10/22(金) 19:12 質問[未読]
【3770】Re:生年月日で並べ替え ちゅう吉 04/10/23(土) 0:10 回答[未読]
【3771】Re:生年月日で並べ替え miya 04/10/23(土) 15:26 質問[未読]
【3772】Re:生年月日で並べ替え かみちゃん 04/10/23(土) 15:44 回答[未読]
【3773】Re:生年月日で並べ替え miya 04/10/23(土) 23:55 質問[未読]
【3774】Re:生年月日で並べ替え かみちゃん 04/10/24(日) 1:24 回答[未読]

【3752】生年月日で並べ替え
質問  miya  - 04/10/21(木) 14:52 -

引用なし
パスワード
   access2002使用です。
生年月日を昇順で並べ替えを行いたいのですが
どうしても生年月日が 
空白/空白/空白
61/空白/空白
空白/08/空白
空白/空白/13
61/空白/13
61/08/空白
等と生年月日のデータがマチマチな場合があり、
年、月、日のどれか1つにでも ”空白”がある人は
最下位にくるように並べ替えを行いたいのですが
こんな複雑な事は無理でしょうか?
今現在、生年月日フィールドの書式に @;99/99/99 と
設定してあるので全くの空白の場合( / / )は99/99/99と
データがある場合は、そのままを表示とはなるのですが

61/01/19
61/06/08
61/12/11
61/空白/空白
などのように並べ替えを行いたいのです。

【3753】Re:生年月日で並べ替え
回答  hatena  - 04/10/21(木) 23:03 -

引用なし
パスワード
   >空白/空白/空白
>61/空白/空白
>空白/08/空白
>空白/空白/13
>61/空白/13
>61/08/空白
>等と生年月日のデータがマチマチな場合があり、
>年、月、日のどれか1つにでも ”空白”がある人は
>最下位にくるように並べ替えを行いたいのですが
>こんな複雑な事は無理でしょうか?
>今現在、生年月日フィールドの書式に @;99/99/99 と
>設定してあるので全くの空白の場合( / / )は99/99/99と
>データがある場合は、そのままを表示とはなるのですが

このフィールド型は、テキスト型でしょうか。数値型でしょうか。
テーブルに実際に格納されているデータはどのような形になっているの
でしょうか。

生年月日フィールドの書式の設定をなしにしたとき、どのように表示されますか。

【3754】Re:生年月日で並べ替え
回答  ちゅう吉  - 04/10/21(木) 23:15 -

引用なし
パスワード
   フィールド「生年月日」が文字列の場合なら・・・

クエリーで

キー: IIf(Len(replace(nz([生年月日],"")," ",""))<6,"a" & [生年月日],[生年月日])

で、昇順に並べ替える方法ではどうでしょう?

【3755】Re:生年月日で並べ替え
質問  miya  - 04/10/22(金) 13:04 -

引用なし
パスワード
   hatena さん
ちゅう吉さん
回答ありがとうございます。
返答が遅れてすみません。

>>空白/空白/空白
>>61/空白/空白
>>空白/08/空白
>>空白/空白/13
>>61/空白/13
>>61/08/空白
>>等と生年月日のデータがマチマチな場合があり、
>>年、月、日のどれか1つにでも ”空白”がある人は
>>最下位にくるように並べ替えを行いたいのですが
>>こんな複雑な事は無理でしょうか?
>>今現在、生年月日フィールドの書式に @;99/99/99 と
>>設定してあるので全くの空白の場合( / / )は99/99/99と
>>データがある場合は、そのままを表示とはなるのですが

すみません。フィールド形式を書き込むのを忘れていました。
フィールド型は、テキスト型です。

生年月日フィールド テキスト型
書式   @;99/99/99
定型入力 99\/99\/99;0;#


テーブルに実際に格納されているデータはどのような形になっているの
でしょうか。

生年月日フィールドの書式の設定を無しにした時の表示は
何もデータ無しの時は 空白
データが西暦下2桁のみ 61/ / 
データが月のみ    /01/
データが日のみ    / /19
こんな感じに表示されます。

やはりクエリーで式を作成して並べ替えを行うしかないのでしょうか?

【3756】Re:生年月日で並べ替え
質問  miya  - 04/10/22(金) 13:06 -

引用なし
パスワード
   ▼ちゅう吉 さん:
hatena さん
ちゅう吉さん
回答ありがとうございます。
返答が遅れてすみません。

>>空白/空白/空白
>>61/空白/空白
>>空白/08/空白
>>空白/空白/13
>>61/空白/13
>>61/08/空白
>>等と生年月日のデータがマチマチな場合があり、
>>年、月、日のどれか1つにでも ”空白”がある人は
>>最下位にくるように並べ替えを行いたいのですが
>>こんな複雑な事は無理でしょうか?
>>今現在、生年月日フィールドの書式に @;99/99/99 と
>>設定してあるので全くの空白の場合( / / )は99/99/99と
>>データがある場合は、そのままを表示とはなるのですが

すみません。フィールド形式を書き込むのを忘れていました。
フィールド型は、テキスト型です。

生年月日フィールド テキスト型
書式   @;99/99/99
定型入力 99\/99\/99;0;#


テーブルに実際に格納されているデータはどのような形になっているの
でしょうか。

生年月日フィールドの書式の設定を無しにした時の表示は
何もデータ無しの時は 空白
データが西暦下2桁のみ 61/ / 
データが月のみ    /01/
データが日のみ    / /19
こんな感じに表示されます。

テキスト型なので文字扱いになるのでしょうか?
やはりクエリーで式を作成して並べ替えを行うしかないのでしょうか?

【3758】Re:生年月日で並べ替え
回答  ちゅう吉  - 04/10/22(金) 14:45 -

引用なし
パスワード
   >キー: IIf(Len(replace(nz([生年月日],"")," ",""))<6,"a" & [生年月日],[生年月日])

前の解答が具体的でなかったのですが、上記のを試してみましたのでしょうか?

・・・では、具体的に

クエリーでは

SELECT TABLE.氏名, TABLE.生年月日
FROM TABLE
ORDER BY IIf(Len(replace(nz([生年月日],"")," ",""))<6,"a" & [生年月日],[生年月日]);

こんな感じになると思われます。


#フィールド[生年月日]の内容は
#何もデータ無しの時は 空白    ⇒ Null または "______"
#データが西暦下2桁のみ  61/ /  ⇒ "61____"
#データが月のみ       /01/  ⇒ "__01__"
#データが日のみ       / /19 ⇒ "____19"
#という仕様でしょうか。
#(空白は便宜上"_"に置き換えています)

【3761】Re:生年月日で並べ替え
回答  hatena  - 04/10/22(金) 16:53 -

引用なし
パスワード
   >生年月日フィールド テキスト型
>書式   @;99/99/99
>定型入力 99\/99\/99;0;#

>生年月日フィールドの書式の設定を無しにした時の表示は
>何もデータ無しの時は 空白
>データが西暦下2桁のみ 61/ / 
>データが月のみ    /01/
>データが日のみ    / /19

Null か、必ず半角空白が含まれているのですね。

クエリの 生年月日 フィールドの前に下記のフィールドを追加してみて下さい。

フィールド 式1: InStr([txtDate]," ")>0 Or [txtDate] Is Null  生年月日
並び替え  降順                        昇順
表示    □                         レ

【3763】Re:生年月日で並べ替え
質問  miya  - 04/10/22(金) 17:41 -

引用なし
パスワード
   hatena さん
ちゅう吉さん
回答ありがとうございます。
クエリーで式を入れて並べ替えを実行するしか
方法はないのですね。

【3764】Re:生年月日で並べ替え
質問  miya  - 04/10/22(金) 17:42 -

引用なし
パスワード
   hatena さん
ちゅう吉さん
とても分かりやすい親切な回答ありがとうございます。
クエリーで式を入れて並べ替えを実行するしか
方法はないのですね。

【3765】Re:生年月日で並べ替え
回答  hatena  - 04/10/22(金) 18:33 -

引用なし
パスワード
   >クエリーで式を入れて並べ替えを実行するしか
>方法はないのですね。

と思います。

【3766】Re:生年月日で並べ替え
質問  miya  - 04/10/22(金) 19:12 -

引用なし
パスワード
   ▼miya さん:

ちゅう吉さんの式で並べ替えは実行されました。
IIf(Len(replace(nz([生年月日],"")," ",""))<6,"a" & [生年月日],[生年月日])


a
a/ /19
a/01/
a71/ / "a"と言う文字は表示してないとダメですかね?

生年月日の後に18.17.16.15.14.13.12.11.10.9.8.7.6.5.4.3.2.1.と
18.〜1.までも昇順で並べ替えを行っているのですが
生年月日が空白の為、後の18.〜1.の昇順での並べ替えは
実行されていないのですが、
生年月日の後に続く18.〜1.フィールドのデータによって
並べ替えを行うにはどのようにしたら宜しいでしょうか?

生年月日  18. 17. 16. 15. 14. 13. 12. 11. 10. 9. 8. 7. 6. 5. 4. 3. 2. 1.
a/ /19   4 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
a/ /19   6 6 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
a/ /    6 6 6 6 5 6 6 6 6 6 6 6 6 6 6 6 6 6
a/01/    6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6

並べ替え
第1希望 生年月日が空白の際、最下位
第2希望 18.値 昇順
 ・
 ・
 ・
最後  1.値 昇順

上記の例えだと見ずらいと思うのですが 実際に分かりやすいように
データを入れて並べ替えが実行されているかを見てみたのですが
上記のような結果にはならなかったので
基本的な事で申し訳ないのですが クエリーは左から順に並べ替えの
実行がなされるのですよね?
ややこしい質問で本当にすみません。

【3770】Re:生年月日で並べ替え
回答  ちゅう吉  - 04/10/23(土) 0:10 -

引用なし
パスワード
   >a71/ / "a"と言う文字は表示してないとダメですかね?

先の↓のクエリーなら"a"という文字は出ません。

SELECT TABLE.氏名, TABLE.生年月日
FROM TABLE
ORDER BY IIf(Len(replace(nz([生年月日],"")," ",""))<6,"a" & [生年月日],[生年月日]);


>
>生年月日の後に18.17.16.15.14.13.12.11.10.9.8.7.6.5.4.3.2.1.と
>18.〜1.までも昇順で並べ替えを行っているのですが
>生年月日が空白の為、後の18.〜1.の昇順での並べ替えは
>実行されていないのですが、
>生年月日の後に続く18.〜1.フィールドのデータによって
>並べ替えを行うにはどのようにしたら宜しいでしょうか?
>
>生年月日  18. 17. 16. 15. 14. 13. 12. 11. 10. 9. 8. 7. 6. 5. 4. 3. 2. 1.
>a/ /19   4 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
>a/ /19   6 6 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
>a/ /    6 6 6 6 5 6 6 6 6 6 6 6 6 6 6 6 6 6
>a/01/    6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
>

なら

SELECT 生年月日,[18.],[17.],[16.],・・・中略・・・,[3.],[2.],[1.]
FROM TABLE
ORDER BY IIf(Len(replace(nz([生年月日],"")," ",""))<6,"a" & [生年月日],[生年月日]),[18.],[17.],[16.],・・・中略・・・,[3.],[2.],[1.];

となります。

【3771】Re:生年月日で並べ替え
質問  miya  - 04/10/23(土) 15:26 -

引用なし
パスワード
   ちゅう吉 さん

回答ありがとうございます
この式をどこに当てはめたらよいのか、わからないのですが
式ビルドではないですよね?
>SELECT 生年月日,[18.],[17.],[16.],・・・中略・・・,[3.],[2.],[1.]
>FROM TABLE
>ORDER BY IIf(Len(replace(nz([生年月日],"")," ",""))<6,"a" & [生年月日],[生年月日]),[18.],[17.],[16.],・・・中略・・・,[3.],[2.],[1.];

【3772】Re:生年月日で並べ替え
回答  かみちゃん  - 04/10/23(土) 15:44 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>この式をどこに当てはめたらよいのか、わからないのですが
>式ビルドではないですよね?

クエリのデザイモード時にSQLビュー(「表示」−「SQLビュー」)に切り替えてください。

【3773】Re:生年月日で並べ替え
質問  miya  - 04/10/23(土) 23:55 -

引用なし
パスワード
   ▼かみちゃん さん:
>クエリのデザイモード時にSQLビュー(「表示」−「SQLビュー」)に切り替えてください。

ちゅう吉さん、ありがとうございます。
かみちゃんさん、ありがとうございます。

SELECT 生年月日, [18B], [17B], [16B], [15B], [14B], [13B], [12B], [11B], [10B], [9B], [8B], [7B], [6B], [5B], [4B], [3B], [2B], [1B]
FROM TABLE
ORDER BY IIf(Len(replace(nz([生年月日],"")," ",""))<6,"a" & [生年月日],[生年月日]), [18B], [17B], [16B], [15B], [14B], [13B], [12B], [11B], [10B], [9B], [8B], [7B], [6B], [5B], [4B], [3B], [2B], [1B];

FROM TABLE ←の TABLEでひっかっかってしまうのですが
元になるテーブル名を入れるのでしょうか?

【3774】Re:生年月日で並べ替え
回答  かみちゃん  - 04/10/24(日) 1:24 -

引用なし
パスワード
   こんちには。かみちゃん です。

>FROM TABLE ←の TABLEでひっかっかってしまうのですが
>元になるテーブル名を入れるのでしょうか?

そうです。
元になるテーブルにして、だめなのでしょうか?

2142 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078294
(SS)C-BOARD v3.8 is Free