フォーム・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