• ベストアンサー

Accessで計算式を利用した在庫期間の算出方法について質問です。

OS XP Access ver.2003 ・在庫の保有期間を算出したいです。 ・元になるデータは入庫月と現在月で、形式はどちらも「yyyy/mm(年月)」です。  たとえば、入庫月「2008/12」現在月「2009/02」です。  上記の保有期間は「入庫月」と「現在月」の間に存在する期間を1月(ひとつき)とすると、「1」と算出させたいです。 ・入庫月と現在月はDBより抽出しておりデータ型は数値型で、テーブルのプロパティ変更はできません。 ・どのようにクエリを作成すれば、保有期間を算出できるでしょうか?

  • kamix
  • お礼率69% (72/103)

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

  • ベストアンサー
  • riveron77
  • ベストアンサー率48% (180/370)
回答No.3

> 入庫月:200810 現在月:200902 …とあるので 両方の項目とも文字列でYYYYMMの形で入っている。"/"は入っていない …と仮定して。 DateDiff('m',CDate(Mid(Trim([入庫月]),1,4) & '/' & Mid(Trim([入庫月]),5,2) & '/' & '01'),CDate(Mid(Trim([現在月]),1,4) & '/' & Mid(Trim([現在月]),5,2) & '/' & '01'))-1 入庫月「200812」現在月「200902」の場合、1と表示されます。 入庫月「200810」現在月「200902」の場合、3と表示されます。

kamix
質問者

お礼

ありがとうございます!!! バッチリとはまりました。素晴らしいです!! 初心者を相手にしていただき恐縮です。 本当にありがとうございました。

その他の回答 (2)

noname#140971
noname#140971
回答No.2

チクット横から失礼! SELECT DateDiff("m",Format([入庫月],"yyyy/mm/01"),Format([現在月],"yyyy/mm/01"))-1 AS 保有期間 FROM tab1; とフォーマットされないと・・・。 長整数なようですから・・・。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

DateDiff("m", [入庫月] & "/01", [現在月] & "/01") - 1 as 保有期間 でいいのでは。

kamix
質問者

補足

アドバイス、ありがとうございます。試してみたのですが、指定の仕方が悪いせいか、うまくデータが出てきませんでした。具体的なアドバイスをいただいたにも関わらず、申し訳ございません。 たとえば、入庫月:200810 現在月:200902 の場合、アドバイスいただきました式ですと、保有期間が「1103」と出てきてしまいます。。。 計算式はクエリのフィールドに打ち込んでおります。 僭越ながら、もし、誤りがありましたらご指摘いただけますと幸甚です。 よろしくお願い致します。

関連するQ&A

  • アクセスでの在庫管理(在庫期間が知りたい)

    アクセスを使って商品の在庫管理を行おうと試行錯誤しています。 1.入庫テーブル(商品名、入庫日、入庫数)に入力。 2.出庫テーブル(商品名、出庫日、出庫数)に入力。  これらから、商品と入庫日をロット単位とし、このように在庫を計算しています。  入庫の合計―出庫の合計=在庫 ここからネックになっているのが、在庫期間をどうあらわすかと言う点です。  通常、今日までの在庫期間は   在庫期間=今日―入庫日  によって表しています。  ここまでは出来ていますが、さらに一歩進めて  日にちを毎回指定し   指定日からの在庫期間=指定日―入庫日  のような感じで在庫期間を表示させたいのですが どのようにクエリを作ったらよいのでしょうか? このようなフローで良いのか、 参考HP等ありましたらアドバイス頂けませんか?

  • ACCESS 複数テーブルの各合計値を期間を指定して算出、閲覧する方法について

    私はACCESS初心者です。会社用で日々の在庫数量を閲覧出来る仕組みを作成しております。 標題の件で行き詰ってしまい、皆様のお力添えを頂きたく、投稿させて頂きました。 現在の設定は下記の通りです。 部品情報テーブル: ・ID(主キー) ・部品番号 仕入履歴テーブル ・ID(主キー) ・部品番号 ・仕入数量 ・仕入日 生産履歴テーブル ・ID(主キー) ・部品番号 ・生産数量 ・入庫日 販売履歴テーブル ・ID(主キー) ・部品番号 ・販売数量 ・販売日 この後、下のようなクエリ(フォーム)で期間を指定して、 それぞれの合計値の算出・閲覧と、在庫数量を算出したいと考えております。 在庫数量確認クエリ(フォーム) ・期間指定 開始~終了 ・部品番号 ・(指定期間の)仕入数量合計(1) ・(指定期間の)入庫数量合計(2) ・(指定期間の)販売数量合計(3) ・在庫数量:([(1)]+[(2)])-[(3)] 例で御説明致しますと、 部品番号:A (仕入履歴テーブル)仕入日、数量: 8月 1日 10個 8月10日 10個 (生産履歴テーブル)入庫日、数量: 8月 2日 20個 8月15日 20個 (販売履歴テーブル)販売日、数量: 8月 5日 30個 8月18日 30個 この時、期間指定「8月1日~8月19日」で設定し、 (仕入10+10)+(入庫20+20)-(販売30+30)=(在庫 0) を成り立たせたいのです。 複数のテーブルに「日付」がある為、どのようにBETWEENを設定をすれば良いか、 また、期間を指定した時に各テーブルの数量を合計で算出するには、 どのようなクエリ設定をすれば良いのでしょうか。 何卒アドバイスを頂けます様、お願い申し上げます。

  • 現在庫算出方法についてお教え下さい

    在庫管理についてお教え下さい 私の行なっている現在庫の算出方法が妥当かどうか御教え頂けないでしょうか? 在庫管理を会社で行なっています。小さい会社なので、商品もそれほどあるわけではありません。 入庫したら以下の方法で入庫処理しています。 ハンディターミナルで商品のバーコードをスキャンし、個数を入力。PCに転送しMYSQL5で管理。 テーブルは、 T_入庫マスター 商品コード,入庫数 出庫したら以下の方法で出庫処理しています。 ハンディーターミナルで商品のバーコードをスキャンし、個数を入力。PCに転送しMYSQLで管理。 テーブルは、 T_出庫マスター 商品コード,出庫数 さらにビューを2つ作っています。 V_入庫マスター select 商品コード,sum(入庫数) As 入庫数 from T_入庫マスター group by 商品コード V_出庫マスター select 商品コード,sum(出庫数) As 出庫数 from T_出庫マスター group by 商品コード 現在庫を求めるには、全ての入庫から全ての出庫を引いたものが現在庫になるはずなので、もう一つビューを作ります。 V_現在庫マスター select V_入庫マスター.商品コード,V_入庫マスター.入庫数 - V_出庫マスター.出庫数 As 現在庫 from V_入庫マスター inner join V_入庫マスター.商品コード = V_出庫マスター.商品コード まだ作り始めて間もないのですが(今まではExcelで在庫管理してました)、果たして現在を求めるのにこのようなやりかたで良いのかどうか不安になりました。 このやり方がスマートかどうか教えて頂けませんでしょうか? 毎日の入出庫は、取扱点数50点。入庫、出庫はマチマチですが各商品10前後です。 よろしくお願いいたします。

  • access クエリにて在庫数を出したい

    お世話になります。 accessにて在庫管理DBを構築しています。 在庫数を出そうとすると、「あいまいな外部結合が含まれているので、SQLステートメントを実行できません。 いずれかの結合を最初に実行するために、第1次結合を実行する分割クエリを作成し、 SQLステートメントにそのクエリを含めてください。」とエラーが出てしまいます。 なにぶん初心者の為、ちんぷんかんぷんです。 ご教授の程よろしくお願い致します。 t_薬剤マスター 薬剤区分ID、薬剤名、包装内容、包装量、単位、薬価 t_店舗 店舗ID、店舗名 q_入庫数の合計 店舗ID、店舗名、薬剤ID、薬剤名、入庫数の合計、小分入庫数の合計、入庫総合計 q_出庫 店舗ID、店舗名、薬剤ID、薬剤名、出庫数の合計 q_在庫 在庫ID、店舗ID、店舗名、薬剤ID、薬剤名、在庫数 とあります。 t_薬剤マスターとt_店舗から、 それぞれのクエリ、(q_入庫、q_出庫、q_在庫)に 「't_薬剤マスター'の全レコードと'q_入庫'の同じ結合フィールドのレコードだけを 含める。」結合を設定しました。 そして下記の様にクエリを作成 フィールド 店舗ID  店舗名    薬剤ID       薬剤名 ____________________________ テーブル t_店舗  t_店舗     t_薬剤マスター  t_薬剤マスター フィールド 在庫数   入庫総合計     出庫数の合計       ____________________________ テーブル q_在庫マスター q_入庫数総合計  q_出庫数合計        フィールド  在庫数: [在庫数]+[入庫総合計]-[出庫数の合計]    ____________________________ テーブル  と作成しました。。。。が実行するとエラーメッセージが出てきてしまいます。 これは結合が悪いと言う事でしょうか? よろしくお願い致しますm(__)m

  • アクセスでの在庫管理で。

    アクセスで物品の在庫管理をしています。 こちらのサイトを参考にさせてただきながら、 がんばっております。よろしくご指導くださいm(._.)m 物品毎に入庫、出庫、在庫の計をクエリで出し、一覧 を表示するフォームがあります。そのフォーム内で、 リストボックスに物品区分を表示させ、ある区分を選択した際に、サブフォーム内(クエリ)の一覧に該当の 区分に属する物品を抽出したいと思っております。 ちなみにアクセス2002では、リストを選んだ際に、 対応するレコードを検索するというのがあるのですが。 List区分 ------------- 文房具 工具 パソコン用品 一覧(クエリ) ------------- 品名   仕様  区分  入庫数 出庫数 在庫 えんぴつ B    文房具   10    5   5 定規   30cm  文房具   20   10   10 という感じにしたいと思っております。 よろしくお願いいたします。

  • Accessのレポートで日々の在庫数を求めるには?

    現在在庫管理のAccessアプリケーションを作っています。 商品別の指定期間の入出庫履歴の一覧をテーブルを基にしたレポートで表現したいと思っています。 データ基となる[T_商品別期間集計]の大まかな構成は以下の通りです。 (クエリにて指定のアイテムを指定期間で抽出しテーブルに書き込んであります) 日付 , 時刻 , 業務区分 , 前月繰越数 , 期間入庫数 , 期間返品数 , 期間出庫数 , 出庫先ID 2007/06/29 , , 7 , 52 , 1 , 0 , 0 , 0 , 0 2007/07/03 , , 2 , 0 , 0 , 1 , 0 , 0 , 0 2007/07/03 , 10:27:05 , 4 , 0 , 0 , 0 , 1 , 0 , 15780 2007/07/03 , 8:45:15 , 3 , 0 , 0 , 0 , 0 , 1 , 15857 2007/07/03 , 10:05:30 , 3 , 0 , 0 , 0 , 0 , 1 , 15631 2007/07/03 , 10:25:05 , 3 , 0 , 0 , 0 , 0 , 1 , 15816 2007/07/03 , 10:25:30 , 3 , 0 , 0 , 0 , 0 , 1 , 15780 このテーブルを基にして日付をグルーピングしたレポートを作りました。 日付グループフッターで日付ごとの入庫、返品、出庫の各値の合計をSum関数にて計算しています。 また、それらの合計値を計算し当日増減数を同じく計算させています[txt_当日の増減]。 現在の状態から、当日のこの商品の在庫数を日付グループのフッターに表示させたいのですが、 最終棚卸日(この例では2007/06/29)から当日までの入出庫数の計算をさせるにはどのような方法がありますでしょうか。 レポート内で計算した[txt_当日の増減]の当日までの集計と2007/06/29時点の在庫数を計算させる事ができれば、、、とは思うのですが、やり方がわかりません。 お分かりになる方がいらっしゃいましたら、是非教えて頂ければ助かります。

  • ACCESS97で現在の日付から勤続年月数を算出する関数

    ACCESS97で社員名簿を作っています。 現在の日付から年齢を算出する関数は調べたところ次のようにすればよいとわかりました。 IIf(Right(Format([生年月日],"yyyy/mm/dd"),5)>Right(Format(Now(),"yyyy/mm/dd"),5),DateDiff("yyyy",[生年月日],Now())-1,DateDiff("yyyy",[生年月日],Now())) 次は現在日から入社年月日フィールドにあるデータを使い、勤続年数○年○ヶ月というクエリーを作りたいのですが、○ヶ月を算出する応用がわからずに困っております。 どうかよろしくお願いします。

  • Accessクエリーにて開始日と終了日から期間を算出

    Accessのクエリーにて、開始日と終了日から該当月の貸し出し期間の算出方法を教えて下さい。 条件ですが、 月単位での算出の為、1ヶ月は「1」、半月は「0.5」で算出します。 当月に開始された明細では、 15日までに開始されれば1ヶ月で算出 16日以降に開始されれば半月で算出 当月に終了された明細では、 15日までに終了されれば半年で算出 16日以降に終了されれば1ヶ月で算出 同月内に開始・終了の場合は1ヶ月で算出 貸し出し中の明細の場合、「終了日」はNULLです。 算出年月 200712の場合のデータは下記の通りです 「算出年月」、「開始日」、「終了日」、 200712、20071210、、、期間は「1」 200712、20071220、、、期間は「0.5」 200712、20050505、20071219、期間は「1」 200712、20061222、、、期間は「1」 200712、20071201、20071210、期間は「1」 宜しくお願い致します。

  • アクセス 指定日から将来の指定日までを算出する式を知りたい

    アクセス2000 職員の人事データ管理をしています。テーブルのフィールドに職員の生年月日や採用年月日を入力しています。 このフィールドをもとに、将来の指定日までの期間を算出したいのです。例えばS50年4月1日に採用された人が来年の平成16年3月31日現在での勤務年月を算出したいのです。 某QAサイトの類似質問に「12月31日現在の年齢の出し方がわからない。今日以降の年齢も算出できるのか?」というのがあり、その答えに「DateDiff("yyyy",[誕生日],Format(date,"yyyy")& "/12/31")」とありましたので、自分のテーブルをもとに、とりあえず今年の12月31日現在の勤務期間を出してみようと「DateDiff("yyyy",[採用年月日],Format(date,"yyyy")」& "/12/31")と入力したところ「パラメータの入力 採用年月日」というダイアログが出てしまいました。うーん、恥ずかしながらこの意味も分からない。 採用年月日などの過去の指定日から、年度末時など将来の指定日までの期間(年月)を算出するための式を教えていただけないでしょうか。

  • =アクセス=在庫管理で、月別の入出庫状況を抽出するには?

    昨日も質問させていただいたのですが、追加の質問が あったもので、投稿させていただきました。 たびたび失礼いたします。ご指導ください。。。 ======================== ★昨日以下の質問をさせていただきました。 物品毎に入庫、出庫、在庫の計をクエリで出し、一覧 を表示するフォームがあります。そのフォーム内で、 リストボックスに物品区分を表示させ、ある区分を選 択した際に、サブフォーム内(クエリ)の一覧に該当の 区分に属する物品を抽出したいと思っております。 →(1)親切な方にご回答をもらい、区分毎の抽出は理解 できました。合わせまして、初期状態では、全区分を 表示し、ある区分を選択した場合には、その区分に対 応する一覧を表示したいです。その後もすべての区分 をまとめて参照できるようなものにしたいと思っています。 (2)また、フォーム内に1~12月に対応したコマンド ボタンを設置して、例えば1月を押下した時には、 サブフォーム内のクエリに一月分の入庫、出庫、 在庫の状態が表示されるようにしたいと思っております。 (3)なかなかよい参考書、サンプルプログラムがなく、 知識も少ないまま・・・作成にあたっております。データ ベースの運用方法になると思いますが、使用し始めて、入力した内容が多くなれば、データベースも大き くなってくるかと思いますが、在庫管理をすると考えた場合、年度毎の運用をするべきなのでしょうか? わかりづらく、脈絡もない文章ですみません。 よろしくお願いします。 List区分 ------------- 文房具 工具 パソコン用品 すべて(→一覧が表示される) 一覧(クエリ) ------------- 品名   仕様  区分  入庫数 出庫数 在庫 えんぴつ B    文房具   10    5   5 定規   30cm  文房具   20   10   10

専門家に質問してみよう