SQLでカウントしてそのまま表示するだけ
サイトが引っ越しました。→https://scombu.com
約1秒後に自動的にリダイレクトします。切り替わらない場合はリンクをクリックしてください。
コンボボックスで商品マスターの大分類、中分類、小分類でデータを絞り込んで
そのレコード数をSQLでカウントするだけの例です。
目的はデータを絞り込んだレコード数を知りたいだけなので、
効率的なやり方は他にあるとおもいますが、あえてSQL使ってやってみました。
ポイントは
VBAのSQLでlikeするときは”%”を使うところ。
クエリでは”*”がワイルドカードだけどVBAだとちがうんですね~
他のやり方としては、表示しているサブフォームのレコードセットのカウントプロパティ
を取得する方法かなぁ・・・
Private Sub cmd計算_Click() Dim myCn As ADODB.Connection 'ADOコネクションオブジェクト Dim myRs As ADODB.Recordset 'ADOレコードセットオブジェクト Dim strSQL As String 'SQL文用文字列 '現在のデータベースへ接続 Set myCn = CurrentProject.Connection 'ADOレコードセットのインスタンス作成 Set myRs = New ADODB.Recordset myRs.CursorLocation = adUseClient Dim stringDai As String Dim stringCyuu As String Dim stringSyou As String Dim recordCount As Integer If IsNull(Me.cb大分類) Then stringDai = "%" Else stringDai = Me.cb大分類 End If If IsNull(Me.cb中分類) Then stringCyuu = "%" Else stringCyuu = Me.cb中分類 End If If IsNull(Me.cb小分類) Then stringSyou = "%" Else stringSyou = Me.cb小分類 End If 'SQL文 strSQL = "SELECT Count(商品マスター.ID) as カウント数" strSQL = strSQL & " FROM 商品マスター" strSQL = strSQL & " WHERE 大分類 LIKE '" & stringDai & "' AND" strSQL = strSQL & " 中分類 LIKE '" & stringCyuu & "' AND" strSQL = strSQL & " 小分類 LIKE '" & stringSyou & "'" strSQL = strSQL & " ;" 'レコードセット取得・・・(※1) myRs.Open strSQL, myCn, adOpenKeyset, adLockReadOnly myRs.MoveFirst recordCount = myRs.Fields("カウント数") MsgBox "選択したレコードすうは!" & recordCount, vbOKOnly + vbInformation 'オブジェクトの開放 Set myRs = Nothing: Close Set myCn = Nothing: Close End Sub