饂飩コーディング

iOSアプリやら、Unityやら、Cocos2dやらごにょごにょ書いております

SQLでカウントしてそのまま表示するだけ

サイトが引っ越しました。→https://scombu.com

約1秒後に自動的にリダイレクトします。切り替わらない場合はリンクをクリックしてください。

f:id:appdeappuappu:20201217212804p:plain
f:id:appdeappuappu:20201217213651p:plain

コンボボックスで商品マスターの大分類、中分類、小分類でデータを絞り込んで
そのレコード数をSQLでカウントするだけの例です。

目的はデータを絞り込んだレコード数を知りたいだけなので、
効率的なやり方は他にあるとおもいますが、あえてSQL使ってやってみました。

ポイントは
VBASQLで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