まりふのひと

材料コード表のリストを「1」にしても在庫管理表に表示される

Question
  • 材料コード表のリストを「1」にしても在庫管理表に表示されます。どのように対応をすればよいですか?
nser

手元にある mdb ver.0.03f で調べた結果です。

  1. 材料コードの「リスト」(テーブル上の名前は「リスト要否」)は、レポート:R_在庫調査表を作る時に使っています。
  2. 在庫管理表に載せたくないものは、[数量入力]時、「事務所」にチェックを入れてください。
    • この改修は、2006年3月に行っています。

関連コード

※1)[在庫調査表作成]クリック時のイベントプロシージャ
Private Sub cmd在庫調査表_Click()
Dim mbTitle As String
Const ReportName As String = "R_在庫調査表"
Dim intView As Integer
Dim strCriteria As String

    mbTitle = MYObjName & "/cmd在庫調査表_Click"
    If F_is整合性() = False Then Exit Sub
    
    If Me.chk在庫調査表 Then intView = acViewPreview Else intView = acViewNormal
    strCriteria = "[実施年月]=#" & Format(Me.txt実施年月, "yyyy/mm/dd") & "#"
    lngAns = DCount("*", "D_在庫数量", strCriteria)
    If lngAns = 0 Then
        If MsgBox("新規作成です。", vbOKCancel + vbInformation, mbTitle) = vbCancel Then
            Exit Sub
        End If
        INTAns = F_Append在庫数量(Me.txt実施年月)
    Else
        INTAns = MsgBox("調査表は作成済です。" & vbCrLf & vbCrLf _
                & " ■[はい]:再発行する。" & vbCrLf _
                & " ■[いいえ]:追加発行する。" & vbCrLf _
                & " ■[キャンセル]:処理を中止する。" _
                , vbYesNoCancel + vbDefaultButton3 + vbExclamation, mbTitle)
        If INTAns = vbCancel Then Exit Sub
        If INTAns = vbNo Then
            INTAns = F_Append在庫数量(Me.txt実施年月)
        End If
    End If
    DoCmd.OpenReport ReportName, intView, , strCriteria
    BOOLAns = Zoom_Report(ReportName)
End Sub
※1.1)関数: F_Append在庫数量()
'内容:実施年月、材料コードが主キーになっている前提。
Public Function F_Append在庫数量(arg実施年月 As Date) As Boolean
On Error GoTo Err_F_Append在庫数量
Dim mbTitle As String
Dim SQLCmd As String
    
    mbTitle = MYObjName & "/F_Append在庫数量"
    DoCmd.SetWarnings False
    SQLCmd = "Insert into " & CONZaikoTable _
            & " (実施年月,材料コード,[品名・規格],材料規格2,数量,単価,金額)" _
            & " Select #" & Format(arg実施年月, "yyyy/mm/dd") & "#" _
            & ",材料コード" _
            & ",iif(isNull([材料規格1]),get短縮材料([材料名]),get短縮材料([材料名] & '<' & [材料規格1] & '>'))" _
            & ",材料規格2,Null,材料単価1,Null" _
            & " from T_材料 Where (P_isList工場([リスト要否])=True)"
    DoCmd.RunSQL SQLCmd
    F_Append在庫数量 = True
    
Exit_F_Append在庫数量:
    DoCmd.SetWarnings True
    Exit Function
    
Err_F_Append在庫数量:
    MsgBox Err.Number & "/" & Err.Description, vbCritical, mbTitle
    Resume Exit_F_Append在庫数量
End Function
※1.2)関数: P_isList工場()

モジュール: M_Public変数 の中にあります。

Public Function P_isList工場(argリスト要否) As Boolean
    P_isList工場 = (Nz(argリスト要否, 0) And 1) > 0
End Function
※2)レポート: R_在庫管理表 のレコードソース

クエリー: Q_在庫管理表 のSQLビューです。

SELECT Q_材料.材料群大, T_材料群.材料群名 AS 材料群大名, Q_材料.材料群, D_在庫数量.品名・規格, D_在庫数量.数量, Q_材料.数量単位, D_在庫数量.単価, D_在庫数量.金額, Q_材料.備考1, Q_材料.備考2, Q_材料.材料名, Q_材料.材料規格1, Q_材料.材料規格2, D_在庫数量.材料コード, Q_材料.材料区分, D_在庫数量.実施年月
FROM (D_在庫数量 LEFT JOIN Q_材料 ON D_在庫数量.材料コード = Q_材料.材料コード) LEFT JOIN T_材料群 ON Q_材料.材料群大 = T_材料群.材料群コード
WHERE (((D_在庫数量.事務所)<>True));