http://support.microsoft.com/kb/135546/zh-tw
http://www.access-programmers.co.uk/forums/showthread.php?t=233343
http://www.baldyweb.com/multiselect.htm
http://www.devhut.net/2010/06/10/ms-access-vba-edit-a-querys-sql-statement/
http://stackoverflow.com/questions/14471679/refresh-requery-combobox-problems
http://www.programmer-club.com.tw/showSameTitleN/vb/414.html
目的:
- 欄位 多選 (ListBox)
- 以別的欄位產生下拉選單 (ComboBox)
範例:
客戶購買的資料放在 資料表 dbo_IDLI44_customer_order_price,欄位包含 客戶代號 TC004、品號 TD005、單價 TD011、數量 TD008。
點選 客戶代號 會同步更新 品號 下拉選單內容。
做法:
將 ListBox 改為 多重選取。
多重選取的傳回值是 NULL,必須用 VBA 將選取的資料組合成自己要的格式。
在 客戶代號 ListBox 的 On Click 屬性建立 VBA 程式碼。
Private Sub TC004_Click()
' add TC004 selected list
Me.TD005.RowSource = "select distinct TD005 from dbo_IDLI44_customer_order_price where TC004 in (" & TC004_selected() & ");"
End Sub
Private Function TC004_selected()
Dim Criteria As String
Dim ctl As Control
Dim Itm As Variant
Criteria = "''"
' Build a list of the selections.
Set ctl = Me.TC004
For Each Item In ctl.ItemsSelected
If Len(Criteria) = 0 Then
Criteria = "'" & Trim(ctl.ItemData(Item)) & "'"
Else
Criteria = Criteria & ",'" & Trim(ctl.ItemData(Item)) & "'"
End If
Next Item
TC004_selected = Criteria
End Function
單價下拉選單的選擇結果會傳回文字,必須用 Val(Me.TD011.Value) 轉為數字,才能夠用 SQL 語法查詢。
沒有留言:
張貼留言