Question
- 材料コード表のリストを「1」にしても在庫管理表に表示されます。どのように対応をすればよいですか?
Anser
手元にある mdb ver.0.03f で調べた結果です。
- 材料コードの「リスト」(テーブル上の名前は「リスト要否」)は、レポート:R_在庫調査表を作る時に使っています。
- 在庫管理表に載せたくないものは、[数量入力]時、「事務所」にチェックを入れてください。
- この改修は、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));