• ベストアンサー

アクセス2000 関数について

以下の関数について教えてください。 処理日(H):"H"&Left([処理日],4)-1988&"年"&Right(Left([処理日],7),2)"月"Right ([処理日],2)&"日" ただいま勉強中で関数のことはほとんど分からない状態です。 仕事で前任者が作成したデータベースを使って仕事をしておりますが、 クエリは今のところ使う予定はないのですが、変更を依頼されたときに困らないように 勉強中です。 どうぞよろしくお願いいたします。

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

  • ベストアンサー
noname#208392
noname#208392
回答No.2

処理日(H):"H"&Left([処理日],4)-1988&"年"&Right(Left([処理日],7),2)"月"Right ([処理日],2)&"日" まず、クエリに計算した結果を見せるには、 フィールド名:計算式 という書式で書く。だから、クエリを走らせたときに、その計算結果のあるフィールド(列)には"処理日(H)"という名前がついているでしょう? "H"というのは、Hという文字を出力せよ、ということ。 文字列をそのまま出力するには、このようにダブルコーテーションマーックでくくります。 & は文字列をつなげて出力しろということ。この関数の場合、H(計算結果)、という書式で出てきます。 Left は、文字列の左側の文字列を切り取って出力しろ、という関数。処理日というフィールドがあるはずですが、その文字列の左4文字を切り取って出力してきます。何文字、というのは、2番目の引数で指定します。#1の方の書かれたフォーマットであっているなら、この左4文字は西暦の年号にあたります。 -1988 はおk? でも、これで走るんですね。Leftというのは文字列を出力するものと思い込んでいたので、引き算ができるとは思わなかった。私もまだ不勉強でした。 あと残っているのは・・・・Rightか。これはLeftと同じですが、これは右から数えて切り取ってきます。 RightとLeftを組み合わせたところがありますね。私なら、こういうのはMid関数を使います。 Mid関数について、詳しくはヘルプを見ていただくことにして、ざっと言えば、ある文字列の、左から何文字目から、何文字分切り出して出力しろ、という関数です。 余計な解説でしたかね。 #1の方の方法に激しく同意するのですが、"関数について教えてください"の意味が、もしかしたらこういうことかもしれないと思って書いてみました。

kabihana
質問者

お礼

ご丁寧な指導をどうもありがとうございます。 理解できるまで勉強していきます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

エクセル(日付シリアル値関連)もそうだが、アクセスも日付の取り扱いの仕組みをよく勉強すべきで、絶対といっていいほど自分で計算してはならない。本件も十分な知識無く計算しているが、平成の年にしたいのだろうが、1988年だったか、1月7?日までは昭和だったと記憶する。だ゛から式は間違いで無くて、結果は誤りを含む。 Format関数などに任せるべきです。Format関数はあたまに出てこないじゃないかということになるが。この問題は経験を積むしかない。 私などの作るコードなどは、都合の良いデータを前提にしたものが多い。怖いとは思っているが、仕事などで使う人は 研鑽と他人から批評を受けること、他人(書籍、WEB、講習会など)からスキルを輸入に勤めるしかない。 個人が頭で考えても、半年や1年では、そういうケースを思いつくことはまず無い。始は学ぶ一方(ほぼ学ぶばかり)を心がけないと。やり方などチェックしてくれる人が無いと、やりっぱなしに終わる。

kabihana
質問者

お礼

本格的に勉強しないと技術は身につかないですね。。当然ですね。 どうもありがとうございます!

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

>処理日(H):"H"&Left([処理日],4)-1988&"年"&Right(Left([処理日],7),2)"月"Right ([処理日],2)&"日" 西暦の日付を、日付でなく数値で20110820の様に入力されている処理日を和暦に直してるようです。 自分なら =CDate(Format([処理日],"0000/00/00")) として書式を nee"年"mm"月"dd"日" とするか =Format(CDate(Format([処理日],"0000/00/00")),"nee年mm月dd日") としますが?

kabihana
質問者

お礼

勉強不足すぎて理解するのにまだまだかかりそうですが。。 どうもありがとうございました。

関連するQ&A