2012-11-22 29 views
1

我是VB的新手。我有一個策略號。 VB中的組合框會在我輸入策略號的前四位後填充。但是,如果我繼續輸入數字,它會覆蓋我已經鍵入的內容並刪除下拉列表,就好像選擇了我輸入的新4個數字一樣。我想要實現一個場景,我將輸入前4個數字來填充下拉列表,因爲我繼續輸入policyno,下拉列表中的值將被搜索。如何過濾vb中的組合框值

EG:保單號碼:969003648,當我輸入9690時,下拉列表中填入了從969000001開始的保單編號,現在我繼續輸入值爲969003等。搜索值限制爲保單號969003作爲起始值......請幫助

我的代碼:

Private Sub PolicyNo_KeyDown(KeyCode As Integer, Shift As Integer) 

If KeyCode = 46 Or KeyCode = 8 Then 
Me.PolicyNo.value = "" 
Else 

If Len(Me.PolicyNo.Text) >= 4 Then 
Me.PolicyNo.RowSource = "" 
Call ReloadPolicyNo(Nz(Me.PolicyNo.Text, "")) 

Function ReloadPolicyNo(sPolicyNo As String) 

Me.PolicyNo.RowSource = "SELECT Inventory.PolicyNo FROM Inventory " & _ 
          "WHERE Left(Inventory.PolicyNo," & Len(Me.PolicyNo.Text) & ") = '" & Me.PolicyNo.Text & "' order by Inventory.PolicyNo" 
End Function 

回答

0

你爲什麼不使用你的組合框TextChanged事件得到什麼是目前在組合框中?

'THIS FIRES WHEN TEXT IS ENTERED INTO THE COMBOBOX 
Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged 

    'GET VALUE IN COMBOBOX 
    Dim enteredText As String = ComboBox1.Text 
    Dim strSelect As String = "select * from table where field like = '" & enteredText & "'%" 

    'load COMBO BOX HERE 

End Sub 
0

這是更好地在這裏使用DataView,我宣佈DataTableclass Variable

Dim dt as DataTable 

取指所有從數據庫中的數據並將其綁定到宣佈DataTable,這DataTable進一步加入DataView和使用RowFilter過濾DataViewCompay_Type是列的一個在我DataTable下面的代碼將過濾DataView並綁定數據,其中列Company_Type=1

  Dim dvComp As New DataView(dt) 
      dvComp.RowFilter = "Company_Type=1" 
      ComboBox1.DisplayMember = "CompanyName" 
      ComboBox1.ValueMember = "CompanyID" 
      ComboBox1.DataSource = dvComp 

要刪除過濾器只需使用dvComp.RowFilter = Nothing

+1

你downvoted我的答案?你有沒有發現我的誠實有傷害,因爲你習慣於對付背後背叛他人的不誠實的人?我現在應該怎麼處理你的答案?這是客觀的錯誤,因爲沒有解決OP所要求的問題;它甚至沒有很好的格式(沒有時間,但有足夠的時間訪問4年前的問題來打擾其他人)。它值得贊成,但我不會這樣做。我很少冷靜(非建設性的,通常是任意的和懦夫的攻擊);另外,也正是由於像你這樣的態度,我不再爲此做出貢獻。 – varocarbas