• ベストアンサー

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

  • アクセス2003 計算結果を反映させたい

    当方:XPのoffice2003 です。 アクセスでデータを作っています。 商品名テーブルを作成し、クエリを介して フォームから入力できるようにしています。 たとえば、100g2000円の商品があったとして、 これをgごとに単価を出したいのですが、 (例でいうと、20 という答えを出したい) 本を読んで、フォーム上で自動計算させることは できるのですが、このフォームの数字を そのままテーブルに反映させることはできますか? 集計表を出すときに、クエリで集計表を出して印刷し、 資料にしています。 この集計表に、計算させた単価を表示させたいのですが・・・ 私のやりかたが間違ってるのか、 または違う方法でできるものがあるのか、 教えて頂きたいと思います。 説明不足の部分がありましたら、ご指摘下さい。 よろしくお願いします。

  • access 在庫計算

    今accessで在庫管理をしています 売上入力のフォームに、在庫テーブルから在庫数を表示させて 売却数を入力したついでに自分で計算して在庫数を変更しています 計算を自動化して在庫数が更新されるようにしたいのですが、どうやったらいいでしょうか?

  • access2007マクロの作成について

    access2007初心者です。 現在、access2007にて顧客管理をしております。 顧客テーブルなるものがあり、別に入力フォームとして新規作成や修正などができるフォーム(単票)を作成してあります。 そこで、顧客テーブルで行(レコード)を選択すると、その行に対応した入力フォームが開くという設定にするには、どのようなマクロを作成すればよろしいでしょうか?マクロでできるのかどうかもわかりません。 どなたか教えていただけないでしょうか?

  • ACCESSの管理データの作り方

    ACCESS2000で総務の給与を入力すると自動的に保険料が入力されるデータベースを作りたいのですが、何せ初心者なので良くわかりません。テーブルで、[その月の給与]を入力し、[保険料の早見表]のテーブルを作りました。社員管理のテーブルも作ってあるのですが、この先の事を教えてください!!

  • Access アクセスについて

    Accessでデータベースを作っています。 テーブル、クエリは下記のようになっており、リレーションシップで紐付けしてあります。 クエリからフォームを作成し、商品番号を入力することでマスタテーブルに登録されていれば自動で商品名等の情報が表示されるようになっています。(フォーム1) 商品番号を入力しカーソルが移動した時、マスタテーブルに該当する項目がなかった場合、マスタテーブルから作成した新規追加用のフォームが表示されるようになっています。(サブフォームではありません) 新規追加用フォームに商品名を入力し、閉じてもフォーム1の商品名の欄に反映されません。新規追加用フォームを閉じる時にVBAで”Requery”,”Refresh”もやってみましたがダメでした。商品番号を入力し直すと表示されます。 どうすれば自動で商品名が表示されるようになるか教えてください。 テーブル1(入力用) 1.ID(主キー) 2.商品番号 3.etc. テーブル2(マスタテーブル) 1.商品番号(主キー) 2.商品名 3.etc. クエリ 1.ID(テーブル1) 2.商品番号(テーブル1) 3.商品名(テーブル2) 4.etc.(テーブル2) 5.etc.(テーブル1)

  • ACCESS 互換性の問題でしょうか?

    お世話になります。 ACCESS2003(OSはXP)でデータを作成しました。(ACCESS2000ファイル形式)そして、ACCESS2000(OSはWIN98)で使おうとしたんですが、不正な処理というメッセージがでて、ACESS自体が閉じてしまいます。そこで、再度ACCESS2003で使ってみたところ普通に動くようです。 詳しくは、社員リストをテーブルで作成。クエリでフォーム入力用に修正。フォーム作成してデータ入力。といった形で作成しました。 テーブルで入力する分には普通に動くのですが、クエリ・フォームで入力するとウインドウが閉じてしまいます。また、氏名、シメイ、誕生日等 フィールドに入力するとウインドウが閉じますが、同じテーブルであるメモというフィールドは入力しても閉じません。 いろいろリレーションシップやカナ自動入力等触ってみたのですが、うまくいきません。やはり、OSかACCESSのバージョンの互換性がうまくいっていないからでしょうか? うまく、説明できなくてすみませんが、よろしくお願いします。

  • ACCESS2013で出金伝票を作成したい

    oficce2013を使用しています。 先日上司より、出来れば出金伝票作成の処理をエクセルからACCESSに移行してほしいとの依賴を受けました。ACCESSなど触れたことすらないのですが、折角なので時間が空いた時間にACCESSの勉強をしております。テーブル/クエリ/フォーム/レポートの基本機能は抑えたつもりです。 最終的には出金伝票をB5用紙に印刷することと、今月の請求金額(税抜き)を勘定科目毎に表でまとめて印刷することを考えています。 基本的にはB5用紙1枚に4社分の出金伝票の印刷を行いたいです。 出金伝票には下記の情報を添付ファイルの出金伝票のフォーマットに載せることを考えています。 _______________________________________ 企業NO 企業名 振込先コード 振込日 支払の詳細(管理販売費or製造費/勘定科目/摘要/支払値引/振込手数料/金額) *摘要名は「◯月分摘要名」と表示をしたいです。 銀行名/支店名 合計 _______________________________________ 上記のことを行うために、現段階の私の知識では下記のようなフィールドを持つテーブルを1つ、 あるいは複数のテーブルで管理し、それを入力するためのフォームを作成。 印刷を行うためにレポートのデザインビューに出金伝票のフォーマットを貼り付けし、 その上からテキストボックスを設置して印刷用のレポートの作成を行う この程度のことぐらいしか連想できません。 ACCESSではテーブル内で請求金額を入力し、計算して税抜き金額と消費税を入力することもできませんし、これではACCESSに移行して利便性が逆に劣ってしまっています。 そこで質問させていただきたいのですが、私が行おうとしてること(主に出金伝票の作成と管理)をACCESSで効率よく行うようにするにはどうすればより良いものができますでしょうか?ご助言よろしくお願いいたします。

  • アクセスフォームで別テーブルの呼びだし。。。

    よろしくお願いします。 アクセスで区分と連番というテーブルがあります。 フォーム連番を使い入力していますがフォームから手入力するのが大変なので区分というテーブルをつくり、入力するときに区分テーブルから参照できるようにしたいのです、リレーションショップはしてみましたが考えているような参照はできませんでした。 フォーム連番は下記4項目入力しています。 管理区分: 連番: 機器番号: 機器名称: テーブル区分は下記の2項目です 管理区分: 機器名称: このときフォームの機器名称のところで区分の機器名称を参照してほしいのですが。 教えてください、お願いします。

  • アクセスからデータをエクスポート

    アクセスについて教えてください。 アクセスで作ったフォームに入力したデータをエクセルのフォームの指定されたセルに「転送」することは可能でしょうか? たとえば、経理関係ですが、発注支払データを管理するアクセスのデータベースから抽出した任意の入力済みデータを、エクセルで作成した「支払申請書」フォームに「転送」して出力し、管理者に提出して承認をもらう、といった場合に使いたいのです。 どなたか教えてください。

  • Access アクセス VBA レコード追加

    Access フォームからのレコードの追加方法を教えてください。 テーブル1 ・ID(主キー) ・窓口 ・コストセンター ---------- テーブル2 ・コストセンター(主キー) ・目的 ---------- リレーションシップ テーブル1のコストセンターとテーブル2のコストセンターを一対多 ---------- メインのフォームに”ID”を入力したときにテーブル1に一致するレコードがない場合、新規登録用のフォームが表示されるようになっています。 新規登録用のフォームにレコードを入力してもテーブルに反映されません。 新規登録用のフォームは下記のように作成しています。 また、フォームに”コストセンター”を入力したときに入力したレコードがテーブル2にあっても自動で”目的”が表示されません。 メインフォームにはサブフォームで各テーブルが表示されています。 フォーム ・ID(初期値•••メインで入力したID) ・窓口 ・コストセンター ・目的 ・コストセンター(非表示) 上から順に ・テーブル1 ・テーブル1 ・テーブル2 ・テーブル2 ・テーブル1