• ベストアンサー

Access、計算式を教えてください。

会社で、Accessを利用し支払管理表を作成していす。同じテーブル(フォーム)上に"決算期"と"決算年月"があり、"決算年月"を入力すると、"決算期"が下記のように自動的に入力されるようにしたいのですが、どうしたらよいでしょうか・・。 決算年月が2006年3,4,5月  →決算期2006年5月 決算年月が2006年6,7,8月  →決算期2006年8月 決算年月が2006年9,10,11月 →決算期2006年11月 もしご存知な方がいらっしゃいましたら教えていただけますようお願いいたします。

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

  • ベストアンサー
  • KAERU_VXV
  • ベストアンサー率60% (18/30)
回答No.3

決算年月には「2006年3,4,5月」とセットされている訳ではないのですよね? (1)決算年月が日付型でデータ上は「2006/03/01」のようにセットされているようでしたら、  Month([決算年月]) で、月が求められます。この場合、  If Month([決算年月]) = 3 then のような条件式で判定できます。 (2)決算年月が文字列型でデータ上は「2006/03/01」のようにセットされているようでしたら、  Mid([決算年月],6,2) で、月が求められます。この場合、  If Mid([決算年月],6,2) = 3 then のような条件式で判定できます。  Mid関数は、この場合、6桁目から2桁を抜き出すという事をしています。 データ型が異なると命令も変わってきます。 CHRONOS_0さんがデータ型を尋ねているのはそのためです。 今回のsponge_bobさんの質問は、データの一部分を抜き出す関数を ご存知ないための質問かと思いますが、蛇足ながら、次のような関数で データの一部分を抜き出すことができます。 ヘルプなどで一度見て頂くと今後の参考になるかと思います。  Year()  Month()  Day()  Weekday()  left()  right()  mid()  instr()

すると、全ての回答が全文表示されます。

その他の回答 (4)

noname#22222
noname#22222
回答No.5

s_husky です。 決算月(0)="2006/02" 決算月(1)="2006/03" 決算月(2)="2006/04" とミスがありましたので再投です。 なお、シコシコと年月を合成する際に使用している文字列を切り取る関数も示しておきます。 Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function ? CutStr("01/02/03/04", "/", 1) <--- "/" で区切られている1番目を取り出せ! 01 ? CutStr("2006年01月01日", "01月", 1) <--- "01月" で区切られている1番目を取り出せ! 2006年 区切りは、"/"でも"01月"でも構いません!

すると、全ての回答が全文表示されます。
noname#22222
noname#22222
回答No.4

Dim strHuduke(1) As String Dim strMM     As Integer Dim strYY      As Integer    strHiduke(0) = "2006/02" strYY = CutStr(strHiduke, "/", 1) strMM = CutStr(strHiduke, "/", 2) strHiduke(1) = strYY & "/" & _            CutStr("02,02,02,05,05,05,08,08,08,11,11,11,", _                ",", _                InStr(1, "__12_01_02_03_04_05_06_07_08_09_10_11_12", strMM, vbTextCompare) \ 6) MsgBox strHiduke(1) 文字列と仮定すれば、このようなルーチンが一つ。 ただし、決算年月の年と決算期の年がずれることがあるとすれば、それを調節するルーチンも必要となります。 が、余りにも手続きが煩雑です。 決算月(0)="2006/02" 決算月(1)="2006/02" 決算月(2)="2006/02" という配列を用意しておいて、決算期をコンボボックス選択にして、配列のインデックスで対応させるのが簡単かもです。 この場合、フォームのコンボボックスと配列を決算期に応じてセットする仕組みが必要になることはいうまでもありません。

すると、全ての回答が全文表示されます。
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

ちょっと変わった四半期ですね 普通は、1-3、4-6、7-9、10-12ですが もうひとつは決算年月が2006年12月,1月,2月で 決算期2006年2月でいいのでしょうか? 決算年月のデータ型は?

すると、全ての回答が全文表示されます。
  • ipsum11
  • ベストアンサー率21% (55/251)
回答No.1

「if (決算年月 = 2006年3月) or (決算年月 = 2006年4月) or (決算年月 = 2006年5月) then 決算期 = 2006年5月」 以下、同様にするのではだめですか?

sponge_bob
質問者

補足

お返事ありがとうございました。大変参考になります。。 ひとつ補足させていただきます。 上記以外にも、2007年,8年,9年…と、今後ずっと継続利用してゆきたいのですが、全てを上記のようなif構文で入力する方法のみになってしまうのでしょうか。 宜しくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A