• ベストアンサー

Access2000で質問です

宜しくお願いします 誕生日から年齢計算をするように設定したかったのですが うまくいきません、 半分はうまくいったのですが、、、 マイクロソフトのページを参照して行ったのですが http://support.microsoft.com/intl/japan/personal/default.asp?nav=kl&GSSNB=1 この設定をした後に、誕生日を入力すると、しっかりと年齢に 反映されるのですが、それをもとにしたテーブルに年齢が うまく反映されません、 どなたか宜しくおねがいします、、

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

>テーブルに年齢がうまく反映されません これは IIf(Right(Format([誕生日],"yyyy/mm/dd"),5)>Right(Format(Now(),"yyyy/mm/dd"),5),DateDiff("yyyy",[誕生日],Now())-1,DateDiff("yyyy", [誕生日],Now())) で演算した満年齢を表示しているだけなのでテーブルには書込み等の反映はされません。 テーブルに反映させるには記述でUPDATEしに行くか更新クエリでも作って書込みし なければ反映されません。 しかし、ARCさんの言うように年齢は毎日変動する可能性のレコードになりますの で各レコードの生年月日ごとに年齢を更新するよりはフォームやレポートに満年齢 を演算するフィールドを作り記述をした方が良いと思います。ARCさんに同感です。 因みにDateDiffもARCさんの言われるように単純には使いません。 満年齢をすぐ出せないためです。例えば生年月日の月日を見に行き今日の日付の 月日と比較して過ぎているかいないかの記述もネストしなくてはならないので上記 のような記述になります。

その他の回答 (3)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

生年月日が2000年9月15日だったとして、 ?DateDiff("yyyy",#2000/9/15#,#2002/9/14#) 2 で ?DateDiff("yyyy",#2000/9/15#,#2002/9/16#) 2 です。 DateDiffは満年齢の計算には使えません。

回答No.2

ややこしい事をされているんですね まぁ、好き好きですから、構いませんけど・・・ DATEDIFF関数ってのがありますので、それを使用して、現在の日付と、誕生日の間の期間を計算させれば、極めて簡単に出ますよ 年齢ってのは、変動する数値ですのでね、固定するテーブルに保存するのであれば、更新クエリーを連動させて、随時更新するようにしておくか、或いは、クエリーや、フォームのコントロールで計算させるかした方が、無難なんですけどね

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

一般に、満年齢をテーブルに保存することはお勧めできません。 なぜなら、満年齢っていうのは毎日変動する要素で、かつ生年月日からいつでも参照可能だからです。 満年齢か絡んでくる処理を非常に頻繁に使用するのでしたら、一日に一度、最初の起動時に再計算をさせてテーブルに保存するのが良いかもしれませんが、そうではないほとんどの場合、データの整合性という見地からするとこのようなことはむしろ好ましくないことなんですよね。 例えばフォームやレポートでしたら、テキストボックスのコントロールソースに満年齢の計算式を記述すると、表示するときに動的に満年齢を計算してくれます。 クエリの場合は、お書きになったURLに回答が書いてありますよね。 満年齢で検索する場合とかは、 満年齢>=16 とする代わりに 誕生日 <= DateSerial(Year(Date())-16,Month(Date()),Day(Date())) ってな感じで代用が利きます。 ↑がわかりにくい(^^; って場合には、 (IIf(Right(Format([誕生日],"yyyy/mm/dd"),5)>Right(Format(Now(),"yyyy/mm/dd"),5),DateDiff("yyyy",[誕生日],Now())-1,DateDiff("yyyy",[誕生日],Now()))) >= 16 とかしてもOK。 ともあれ、どうしてもテーブルに年齢を持たせたいときもあるでしょうから、そんなときは以下のような更新クエリを使えば良いでしょうね。(テーブル名やフィールド名を書き換えた後、SQLビューにして張り付けてください) UPDATE 個人テーブル SET 満年齢 = IIf(Right(Format([誕生日],"yyyy/mm/dd"),5)>Right(Format(Now(),"yyyy/mm/dd"),5),DateDiff("yyyy",[誕生日],Now())-1,DateDiff("yyyy",[誕生日],Now())) WHERE 満年齢<>(IIf(Right(Format([誕生日],"yyyy/mm/dd"),5)>Right(Format(Now(),"yyyy/mm/dd"),5),DateDiff("yyyy",[誕生日],Now())-1,DateDiff("yyyy",[誕生日],Now()))))); で、このクエリを起動時とか、満年齢が必要になる処理の直前とかに実行する、と。 #SQL文とかを実際に検証したわけではないので、「自信なし」です。

pieceofcake
質問者

お礼

そうだったんですね、 勉強になりました。ご丁寧に 本当にありがとうございました

関連するQ&A

  • マイクロソフトXPの宣伝をしている女優さんは?

    マイクロソフトのwebサイト上では、3姉妹という設定で3人の女優さんがXPの案内をしています。 http://www.microsoft.com/japan/users/broadband/default.asp#win この3人の女優さんは誰でしょうか?

  • 『同じメールが2通来る』という質問に関連した疑問です・・・

    先日『同じメールが2通来て困る』という質問(NO.1137852)をしたのですが、その後次のようなサイトを見つけました。 http://www.otoku-pro.com/html/9009.shtml このサイトでは『メールが重複して来る要因』の一つとして、「Pop3uidl.dbx」ファイルが壊れているからではないかと言っています。「Pop3uidl.dbx」というファイルを「ごみ箱」に移動し、OEを起動して「Pop3uidl.dbx」を自動的に作成させよというものです。「* マイクロソフトの公式見解は下記を参照」と書かれていますが、残念ながら、このサイトにはつ ながらなかったので、確認ができませんでした。 http://support.microsoft.com/intl/japan/support/tshoot/oe5/jaoemail/jaoemail107.asp それで質問なのです。私のパソコン(WindowsXP)でこのファイルを検索したのですが見つかりませんでした。これは何故でしょうか?無いのは異常なのでしょうか?ご教授願えませんか?宜しくお願いします。

  • ヤフーオークションの残り時間が表示されない

    お願いします。 ヤフーオークションの詳細残り時間が表示されません。過去の質問を参照しましたら、http://www.microsoft.com/japan/java/default.asp からJAVAVMをDLとありますが、その方法を教えて下さい。お願いします。

  • Microsoft SideWinder Precision2売ってるお店

    マイクロソフトのオンラインリセラー4店(http://www.microsoft.com/japan/users/onlinereseller/hardware/sw/default.asp)ではなぜか売ってません。 他に売ってるオンラインショップをご存知でしょうか? もしオンラインショップでしたら都内のお店で売ってるところ教えていただけたらありがたいです。 秋葉原で売ってればいいんですが。

  • XMLパーサー(であってるのかな?)について

    いつもお世話になっています。 VB6.0でXMLファイルを読み込むプログラムを修正しています。 参照設定で「Microsoft XML,version2.0(msxml.dll)」というのを使用しています。 そこで、みなさんにお伺いしたいのが、 このオブジェクトのヘルプファイルの場所なんです。 正直言っていろいろなメンバーがあったり、メソッドがあったり しても、何を書いてるのか「やんわりと」しかわかりません(;_;) MSDNでそれらしきライブラリを見つけたのですが、 微妙に名前が違ってて、それでもいいのかわからず・・・ ヘルプドキュメント(MSDNなど)の場所をご存知の方 いらっしゃいましたら、教えて下さい。 自分でみつけたのは 1 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemxmlxmlnodememberstopic.asp 2 http://www.microsoft.com/japan/msdn/xml/general/beginner.asp#What でした。これであってるのでしょうか? 2は、まさにやってるのは「これ」なんですが、あまりにも概要だけで、細かい処理の内容までわかりません。 みなさんよろしくお願いします。

  • Internet Explorerを開いたら、設定した以外のIEホームが開いた

    Internet Explorerを開いたら、最初に開いた時に設定してあるHP以外の、 Internet Explorerホームhttp://www.microsoft.com/windows/ie_intl/ja/default.mspxというのが開いたのですが、これはこういう仕様なのでしょうか? 最初はスパイウエアかと思ったのですが、本物のマイクロソフトのHPみたいなので…

  • WindowsNT4.0 システムの起動時間

    お世話になります。 WindowsNT4.0について教えてください。 「Microsoft Internet Information Server 4.0 セキュリティ チェックリスト」 http://www.microsoft.com/japan/technet/treeview/default.asp?url=/japan/technet/security/chklist/iischk.asp の中に、 「システムの起動時間を 0 秒に設定する」 という項目がありますが、これを設定することで、 なぜ、セキュリティが高まると言えるのしょうか? ご存知の方は教えてください。 よろしくお願いします。

  • ACCESSのテーブル設定について

    私はアクセス2000を使っていますが、わからない事があるのでお願いします。 ACCESSのテーブルに、[誕生日]をフィールドに設定して、[年齢]を後から追加しました。クエリの演算フィールドで、例えば、 年齢:Year(date())-Year([誕生日]) とすると、年齢が求まるように、 テーブルにおいても、年齢フィールドにそのような計算の結果としての年齢を求めたいのです。 クエリでは演算フィールドに、クエリビルダーから計算式を使って年齢をもとめられるのですが、テーブルで年齢を求める場合のやり方がわかりません。 お分かりの方教えて下さい。 宜しくお願いします。

  • HPがgooなのにマイクロソフトのサイトが表示される

    HPの設定でgooを設定しているんですが、IEを開くとごくたまにマイクロソフトのサイトが表示されます。 おかしいなと思い、HPの設定を確認しましたがgooのままでした。 ツールバーからホームボタンを押すとgooが開きました。 この症状が出るのは稀です。 表示されるサイトはこちらです。 http://www.microsoft.com/windows/ie_intl/ja/default.mspx 本物のマイクロソフトのアドレスのようですし、ウイルス、スパイウェアの可能性は低いと考えています。 ウイルスチェック、スパイウェアのチェックは最近行いました。 私の環境 Windows XP SP2 Internet Explorer 6.0 この症状が出るのは何かのバグなんでしょうか?

  • BKDR_IROFFER.Rというウイルスの駆除の仕方

    ウィンドウズ2000でBKDR_IROFFER.Rというウイルスが入っています。 トレンドマイクロのウイルスデータベース(http://www.trendmicro.co.jp/vinfo/virusencyclo/default5.asp?VName=BKDR_IROFFER.R)を参照し、駆除しようとタスクマネージャを起動しcnfmon.exeというプロセスを終了しようとしても「アクセスが拒否されました。」と出てしまいます。 ここでつまずいてしまい困っています。分かる方いらっしゃったらお願いします。

専門家に質問してみよう