テーブルに以下のようなデータがあります。
名前 更新日
Aさん 2002-12-01
Bさん 2003-08-18
Cさん 2004-12-31
この【更新日】ですが、1年更新のため、それが過ぎると、常に次の更新日を表示したいのです。
※2004-12-24現在
名前 更新日
Aさん 2005-12-01
Bさん 2005-08-18
Cさん 2004-12-31
(1) クエリで、上記のように実現するには、どのようにすればよいのでしょうか?
(2) クエリで、日付の書式変更(例えば、2005-12-01 → 05-12-01に変更)はできますか?
※(1)ですが、私のイメージとしては、
→年と月日を分解
→(今年の年)+月日 を作る
→もし、その日が既に過ぎていれば、
(翌年の年)+月日
→もし、その日がまだ過ぎていなければ、
(今年の年)+月日
こんなイメージですが、Accessでの方法がまったくわかりません。ビルダという画面で操作するのでしょうか?また、これより、もっと、よりシンプルな方法があるようでしたら、教えてください。
以上、ご指南頂けると助かります。宜しくお願い致します。
環境:Win Access 2003
No.1ベストアンサー
- 回答日時:
(1)クエリー上であなたのイメージに基づいて作れば、
フィールド名を仮にAAとした場合、
AA: IIf([銀行テーブル]![日付]<Date(),DateSerial(Year(Date())+1,Month([銀行テーブル]![日付]),Day([銀行テーブル]![日付])),[銀行テーブル]![日付])
という感じになります。
(2)日付の書式設定を行なうには、Format関数を使えば
Format$([日付],"yy-mm-dd")
でできます。
この回答への補足
有難うございました。
おかげ様でイメージができました。
補足ですが、アドバイス頂いた式の場合、一部ケースで意図通りにできませんでした。
今日を基準として、それより過去かどうかで判別していますが、この方法の場合、
今日:2004/12/21
日付データ:2003/12/31
上記の場合、日付データが過去のため、「2005/12/31」となります。
正解は、「2004/12/31」とならなければいけません。
Date()の部分を、
今年の年: DateSerial(Year(Date()),Month([銀行テーブル]![日付]),Day([銀行テーブル]![日付]))
として、それを基準とすることで対処できました。
今日:2004/12/21
日付データ:2003/12/31
今年の年:2004/12/31 ☆ 今日を過ぎていないので、そのまま(今年の年)を表示
→ 2004/12/31 OK!
今日:2004/12/21
日付データ:2003/01/31
今年の年:2004/01/31 ☆ 今日を過ぎているので、(今年の年)+1年 を表示
→ 2005/01/31 OK!
おそらく、この方法で大丈夫かと。
もう少し、アドバイスを募って、特になければ、解決にさせていただきたいと思います。
また、機会があれば宜しくお願い致します。
No.2
- 回答日時:
#1さんのやり方でいいですが、
(1)の別のやり方としては、日付加算関数を使われてはいかがでしょうか。
#1さんの例をかりて
AA: IIf([銀行テーブル]![日付]<Date(),DateAdd("y",1,[銀行テーブル]![日付])
y:年を加算 mだと月数 いろいろありますがヘルプを見てください
1:期間 マイナスにすると過去になります
この回答への補足
ありがとうございます。
DateAddの方が、式がシンプルになりそうでしたので、トライしましたが、上手く行きません。
なぜか、"y"としているので、1年足されずに、1日が足されます。
AA: DateAdd("y",1,"2004-12-21")
↓
04-12-22
mにすると、きちんと1月足されます。dにしても、04-12-22となりますので、問題ありません。
どうなっているのでしょうか。。。
※Accessのバージョンの問題でしょうか。Access2003を使っていますが、ファイルは、以前の2000形式を使っています。
No.3
- 回答日時:
>Accessでの方法がまったくわかりません。
>ビルダという画面で操作するのでしょうか?
クエリを作成しフィールドの欄に直に記述するかビルダを開きそこに記述するかのどちらかで出来ます。
次期更新日:IIf([更新日]<Date(),DateAdd("yyyy",1,[更新日]),[更新日])
Date()はシステム日付(本日)です。DateAddの中の"yyyy"と1は年数に1年加算するという事です。Date()(本日)より更新日が小さければ更新日に1年加算され多ければ更新日そのままで表示されます。
"y""d"は年間通算日なので1を加算しても日数を加算するだけなので1日しか加算されません。"yyyy"で1年加算されます。
あくまでもクエリで次期更新日を表示するだけなのでテーブルには反映されません。反映させたければ更新クエリを作る必要があります。更新クエリの場合も同じ関数式を使って更新できます。
>日付の書式変更(2005-12-01 → 05-12-01に変更)
表示形式の変更は#1の方の
Format$([更新日],"yy-mm-dd")
でクエリ上は表示されます。これもあくまでも表示上だけです。テーブルはあくまでもyyyyの西暦4桁です。
わかりやすい回答ありがとうございました。
DateAdd関数は知らなかったので、勉強になりました。
書式変更は、右クリックのプロバティでも書式の欄で簡単にできるようですね。
また機会があれば、宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/12/23 14:57
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/12/22 17:29
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/04/13 10:55
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
- 国民年金・基礎年金 障害年金(精神)の更新について質問があります。 文章で上手く伝えられるか不安ですが、経験者又は知識が 3 2023/03/17 21:40
- CPU・メモリ・マザーボード マザーボードが製造された日からおおよそのBIOSのバージョンは把握できますか? 例えば、元のverが 3 2022/06/30 17:15
- 派遣社員・契約社員 契約社員の更新時期について 1 2022/07/26 12:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
VBA 別シートの同じ日付の欄に...
-
Accessのデータ型の日付/時刻型...
-
指定日付を起点にして最新日付...
-
【Accessで困っています...
-
BCPでCSV内の文字列をテーブル...
-
エクセル-過去6カ月分の合計を...
-
Access クエリで、レコードの無...
-
SQL Server2005のクエリで「今...
-
【エクセル】指定した日付に一...
-
ACCESSで旬別集計
-
ACCESS フォームで日付を入力し...
-
アクセス97のVBAで日付項目をヌ...
-
ACCESS フォームの非連結の日...
-
Excleピボットでデータのない部...
-
【ピボットテーブル】4月から翌...
-
エクセルで書式設定ではなく、...
-
Accessの日付時刻型から日付、...
-
差込印刷での全角表示について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
Accessの日付時刻型から日付、...
-
アクセスで月単位の抽出
-
VBA 別シートの同じ日付の欄に...
-
Accessのデータ型の日付/時刻型...
-
Excel→Accessへの日付データの...
-
アクセス:既定値に土日含まず...
-
BCPでCSV内の文字列をテーブル...
-
エクセル-過去6カ月分の合計を...
-
Access クエリで、レコードの無...
-
指定日付を起点にして最新日付...
-
【エクセル】指定した日付に一...
-
【Accessで困っています...
-
Accessで日付の比較がうまくい...
-
【vba】日付の形式が勝手に変わ...
-
前のレコードの合計に現レコー...
-
ACCESSの空白をカウントする
-
アクセス97のVBAで日付項目をヌ...
おすすめ情報