Microsoft Access 掲示板

在庫数の算出 / 26

29 コメント
views
4 フォロー
26
スナフキン 2020/01/28 (火) 11:16:24 837f8@06760

横から失礼。
はじめまして、スナフキンと申します。
少し気になって、期首在庫は必要ないのでしょうか?
それによってはすべてアウトになりそうで^^;;

一応、標準モジュールに
Public Function F_出庫数(int製品ID As Integer, str年月 As String, Optional bln集計区分 As Integer = 0) As Double

    Dim strQuery As String

    If bln集計区分 = 0 Then
        strQuery = "SELECT SUM(S.出庫数量) AS 出庫数量 FROM 出庫詳細 S LEFT JOIN 出庫 SH ON S.出庫ID=SH.出庫ID WHERE S.製品ID=" & int製品ID & " AND Format(SH.出庫日,'YYYYMM')='" & str年月 & "'"
    Else
        strQuery = "SELECT SUM(S.出庫数量) AS 出庫数量 FROM 出庫詳細 S LEFT JOIN 出庫 SH ON S.出庫ID=SH.出庫ID WHERE S.製品ID=" & int製品ID & " AND Format(SH.出庫日,'YYYYMM')<'" & str年月 & "'"
    End If

    Dim cn As New ADODB.Connection
    Dim rec As New ADODB.Recordset

    Set cn = CurrentProject.Connection
    Set rec = cn.Execute(strQuery)

    If rec.EOF = False Then
        F_出庫数 = Nz(rec.Fields("出庫数量"), 0)
    Else
        F_出庫数 = 0
    End If

    rec.Close: Set rec = Nothing
    cn.Close: Set cn = Nothing

End Function

Public Function F_入庫数(int製品ID As Integer, str年月 As String, Optional bln集計区分 As Integer = 0) As Double

(出庫と同じなので省略)

End Function

上記参照設定でADOにチェックです^^/

を用意したとして
製品IDを1
2020年1月の場合

前月在庫数=F_入庫数(1,"202001",1)-F_出庫数(1,"202001",1)
当月入庫数=F_入庫数(1,"202001")、当月出庫数=F_出庫数(1,"202001")
当月在庫数=F_入庫数(1,"202001",1)-F_出庫数(1,"202001",1)+F_入庫数(1,"202001")-F_出庫数(1,"202001")

上記でどうでしょうか?
クエリーでも使用できると思いますし、少し工夫すれば、期首在庫にも対応できるはず^^;;

かな??

通報 ...
  • 27
    mayu 2020/01/29 (水) 19:33:07 修正 9b175@61ad5 >> 26

    少し気になって、期首在庫は必要ないのでしょうか?
    それによってはすべてアウトになりそうで^^;;

    フック船長さんのテーブル構成だと、棚卸をおこなった時点で

     ・ 製品ID毎に、実在庫に対して過不足があった場合は
       過不足分の数量を登録したレコードを DB登録して 不整合を解消する。
    
     ・ 製品ID毎に、詳細テーブルは 実在庫分の数量を記載した1レコードのみ の状態にし、
       棚卸実行日以前の全レコードは、別の場所へバックアップした上で削除
    

    のどちらかで実現可能でしょうし、
    テーブル設計が きちんと出来ていることから
    フック船長さんは こういった業務知識や手法を身につけている可能性が高いのではないか
    というのが、私の見解です。 
     

    上記でどうでしょうか?
    クエリーでも使用できると思いますし、少し工夫すれば、期首在庫にも対応できるはず^^;;

    N + 1 問題
    に該当しています、とだけ。