在庫管理

在庫管理システム-在庫検索

2022年10月15日

フォーム・F_在庫検索

クエリ・Q_集計

「Q_メイン」クエリを利用して下記のように作ります。

  • 計算がありますので、【デザイン】タブを開いて「Σ集計」をクリックしておきます。
  • Σ集計をクリックすると、今度は「集計」という行が現れます。下記のように「数量」を計算(合計)できるようにします。
  • 「数量の合計:数量」となっているフィールドはプロパティを開いて【表題】を「在庫数」にしておくと、フォームが表示された時に「在庫数」と表示されます。

「品目型式」の抽出条件はVBAで記載します。

※必要に応じて表示させる項目を追加・削除してください。

SQLビュー

SELECT DISTINCTROW Q_メイン.保管場所, Q_メイン.品目コード, Q_メイン.品目型式, Q_メイン.[メーカー], Sum(Q_メイン.数量) AS [数量 の 合計], Q_メイン.単位, Q_メイン.安全在庫, Q_メイン.削除, Q_メイン.指図番号
FROM Q_メイン LEFT JOIN (T_品目 LEFT JOIN T_仕入先 ON T_品目.仕入先コード = T_仕入先.仕入先コード) ON Q_メイン.品目コード = T_品目.品目コード
GROUP BY Q_メイン.保管場所, Q_メイン.品目コード, Q_メイン.品目型式, Q_メイン.[メーカー], Q_メイン.単位, Q_メイン.安全在庫, Q_メイン.削除, Q_メイン.指図番号
HAVING (((Q_メイン.削除)=False))
ORDER BY Q_メイン.保管場所;

VBAコード

「検索ボタン」のプロパティからイベントプロシージャを選択して、下記のようにVBAコード(Ver.2.10)を記載します。

フォーム・F_在庫検索のVBAコード

Option Compare Database
Option Explicit

'---------------------------------
Private Sub Form_Load()
    '---------------------------------
    'サブルーチンFormInitはM_画面にあります
    '---------------------------------
    Call FormInit(Me.Form)
    Call Form_Resize
End Sub

'---------------------------------
Private Sub Form_Resize()
    '---------------------------------
    'サブルーチンAdjustWidthはM_画面にあります
    '---------------------------------
    Call AdjustWidth(Me, Me.SF_在庫検索, 0)
End Sub

'---------------------------------
Private Sub cmd_検索_Click()
On Error GoTo 終了
    Dim strFilter1 As String
    Dim strFilter2 As String

    strFilter1 = str検索フィルタ
    strFilter2 = "品目コード < " & lng子品目上限 + 1


    With Me.SF_在庫検索.Form
        .Filter = strFilter1 & " And " & strFilter2
        .FilterOn = True
    End With
    
    '---------------------------------
    'サブルーチン検索履歴はM_在庫管理にあります
    '---------------------------------
    If IsNull(cmb_品目型式) = False Then Call 検索履歴(Me.cmb_品目型式) 'コンボボックスの検索ワードをT_検索履歴に追加する
    Me.cmb_品目型式.Requery
    Exit Sub
終了:
    Call エラーログ("F_在庫検索", "cmd_検索_Click")
End Sub

'---------------------------------
Private Sub cmb_品目型式_Change()
    Call cmd_検索_Click
End Sub

'---------------------------------
Private Sub cmd_エクスポート_Click()
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Q_集計", "在庫管理.xls", True, "在庫数"
    MsgBox ("マイドキュメントにエクスポートしました")
End Sub

'---------------------------------
Private Sub cmd_終了_Click()
   DoCmd.Close
End Sub

'---------------------------------
' マウスドラッグでフォーム移動
'---------------------------------
Private Sub フォームヘッダー_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button And acLeftButton Then
        ReleaseCapture
        Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
    End If
End Sub

'---------------------------------
Private Sub 詳細_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button And acLeftButton Then
        ReleaseCapture
        Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
    End If
End Sub

サブフォーム・SF_在庫検索のVBAコード

Option Compare Database

'---------------------------------
Private Sub Form_Load()
    '---------------------------------
    'サブルーチンFormInitはM_画面にあります
    '---------------------------------
    Call FormInit(Me.Form)
End Sub

'---------------------------------
Private Sub 品目型式_DblClick(Cancel As Integer)
On Error GoTo 終了
    If SysCmd(acSysCmdGetObjectState, acForm, "F_BOM") = 1 Then 'F_BOMが開いているかどうか
        Forms![F_BOM]![cmb_子品目コード].Value = Me.品目コード.Value
        Forms![F_BOM]![lbl_子品目型式].Caption = Me.品目型式.Value
        Forms![F_BOM]![cmb_保管場所].Value = Me.保管場所コード.Value
        Forms![F_BOM]![lbl_保管場所].Caption = Me.保管場所.Value
        Forms![F_BOM]![cmb_単位].Value = Me.単位コード.Value
        Forms![F_BOM]![lbl_単位].Caption = Me.単位.Value
        DoCmd.Close
    ElseIf SysCmd(acSysCmdGetObjectState, acForm, "F_入出庫処理") = 1 Then
        Forms![F_入出庫処理]![cmb_品目].Value = Me.品目コード.Value
        Forms![F_入出庫処理]![lbl_品目].Caption = Me.品目型式.Value
        Forms![F_入出庫処理]![cmb_保管場所].Value = Me.保管場所コード.Value
        Forms![F_入出庫処理]![lbl_保管場所].Caption = Me.保管場所.Value
        DoCmd.Close
    Else
        
    End If
    Exit Sub
終了:
    Call エラーログ("SF_在庫検索", "品目型式_DblClick")
End Sub

-在庫管理