帮助-VBA-搜索功能-数据库MS访问

| 数据库结构: 用户名字符串 位置字符串 价格编号 需求: 我有一些包含100项的列表框。用户将在列表框中随机选择10个(将MULTISELECT更改为2fmMultiselect属性后)。我将有搜索按钮。选择并单击“搜索”后,必须计算并显示所选项目的总价。 我的搜索代码(感谢Alex先生)
enter code here
Private Sub CommandButton4_Click()

Dim Cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sName As String

Set Cn = New ADODB.Connection
Cn.ConnectionString = \"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\\test2.accdb;Persist Security Info=False\"
Cn.ConnectionTimeout = 40
Cn.Open

Set rs = New ADODB.Recordset

sName = Replace$(TextBox1.Text, \"\'\", \"\'\'\")
rs.Open \"Select * from SampleTable where UserName = \'\" & sName & \"\'\", Cn, adOpenForwardOnly, adLockReadOnly, adCmdText

If (rs.EOF) Then
    MsgBox \"no match\"
Else
    TextBox3.Text = rs(\"UserName\") & \" \" & rs(\"Location\")


    rs.Close

End If

Set rs = Nothing
Cn.Close
Set Cn = Nothing


End Sub
该代码仅用于搜索并显示在文本框中。 现在,我需要总计用户从列表框中选择的所有UserName字段的价格。     
已邀请:
尝试此操作,但请确保列表框中的绑定列是表的ID字段。
Private Function SelectedListString(lstSelected As Access.ListBox) As String
\'Loop though a list and get the IDs of all the selected items
\'Assumes the bound column is the contains the ID field
    Dim sList As String
    Dim vSelected As Variant        
    With lstSelected
        For Each vSelected In .ItemsSelected
            sList = sList & .ItemData(vSelected) & \",\"
        Next
    End With
    If sList <> \"\" Then sList = Left(sList, Len(sList) - 1) \'trim trailing coma
    SelectedListString = sList
End Function
您可以在SQL的IN语句中使用结果
Dim sSql As String
If myListbox.ItemsSelected.Count > 0 Then
    sSql = \"SELECT * FROM table WHERE IDField IN (\" & SelectedListString(myListbox) & \")\"
End If
    

要回复问题请先登录注册