ADODB vb.net组合框值到文本框工作在最后一个索引

问题描述:

我在这里有一个问题在vb.net我需要获取组合框值的值到文本框。但它只显示组合框的最后一个索引。/ADODB vb.net组合框值到文本框工作在最后一个索引

//这里是我的代码

Private Sub cboname_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboname.SelectedIndexChanged 
    strSql = "SELECT * FROM tblCashier WHERE ProductCode= '" & cboname.Text & "' " 

    Do Until myRecord.EOF 
     txtname.Text = myRecord.Fields("Product").Value 
     myRecord.MoveNext() 
    Loop 



    Call executeQuery2(strSql) 
    Call getRecord() 
End Sub 

// ADODB CONNECTIONS

Dim strSql As String 
Dim myRecord As New ADODB.Recordset 

// COMBO框中的值

Sub fillcombo() 
    strSql = "SELECT * FROM tblCashier" 

    Do While Not myRecord.EOF 
     cboname.Items.Add(myRecord.Fields("ProductCode").Value) 
     myRecord.MoveNext() 
    Loop 

    cboname.Refresh() 
    Call executeQuery(strSql) 
    Call getRecord() 
End Sub 

//的Form_Load

Private Sub myPOS_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Call openConnection() 
    Call getRecord() 
    Call fillcombo() 


End Sub 
+0

你为什么首先使用ADODB?你为什么不使用ADO.NET?你应该做的是使用数据适配器填充一个DataTable,然后将它绑定到ComboBox和TextBox。随着用户选择项目,您不需要任何代码来填充“文本框”。 – jmcilhinney

+0

至于具体的问题,考虑到你的'SelectedIndexChanged'事件处理程序中有一个循环,它专门移动到'Recordset'的末尾,为什么除了获取最后一个项目之外,你还期望什么? – jmcilhinney

这样的事情应该做这样的事:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Using adapter As New OleDbDataAdapter("SQL query here", "connection string here") 
     Dim table As New DataTable 

     adapter.Fill(table) 

     BindingSource1.DataSource = table 

     With ComboBox1 
      .DisplayMember = "ColumnNameToDisplay" 
      .ValueMember = "PrimaryKeyColumnName" 
      .DataSource = BindingSource1 
     End With 

     TextBox1.DataBindings.Add("Text", BindingSource1, "OtherColumnNameToDisplay") 
    End Using 
End Sub 

TextBox将自动作为ComboBox变化选择更新。