2015-03-25 161 views
0

我正在创建一个窗体,其中用户必须提供州名和城市名称。城市依赖于国家。从其他组合框的选定项目填充组合框

代码用于填充城市:

Dim ds As DataSet = New DataSet 
Dim adapter As New OleDb.OleDbDataAdapter 
Dim sql As String 
    sql = "SELECT * from statestab order by `state` ASC;" 
    adapter.SelectCommand = New OleDb.OleDbCommand(sql, con) 
    adapter.Fill(ds) 
    ComboBoxstate.DataSource = ds.Tables(0) 
    ComboBoxstate.ValueMember = "stateid" 
    ComboBoxstate.DisplayMember = "state" 

代码为城市:

Dim ds As DataSet = New DataSet 
Dim adapter As New OleDb.OleDbDataAdapter 
Dim sql As String 
Dim st As Integer 
    st = ComboBoxstate.SelectedValue.ToString() 
    sql = "SELECT * from citytab where stateid=st order by `cityname` ASC;" 
    adapter.SelectCommand = New OleDb.OleDbCommand(sql, con) 
    adapter.Fill(ds) 
    citycombo.DataSource = ds.Tables(0) 
    citycombo.ValueMember = "cityid" 
    citycombo.DisplayMember = "cityname" 

在下拉列表中,当选择城市化,我拨打市加载功能来填充城市组合框。 但我无法填充城市组合框。

+0

什么不工作?你得到一个错误或国家不显示? – phil652 2015-03-25 12:18:20

+0

它看起来像你没有将状态ID传入你的第二个查询中,而只是文本“st”而不是“st”变量的值。除非你在表中有一个名为'st'的列,否则我希望你看到一个SQL异常? – 2015-03-25 12:39:41

+0

我有一个列名称stateid城市选项卡,这也是目前statestab – 2015-03-25 16:53:02

回答

0

您需要在状态组合框中的Selected_Index_Changed中使用处理程序。从那里,叫你的日常装载了城,在SQL的城市,你需要做的

where stateid=" & comboBox1.SelectedValue.ToString() 
+0

尝试过但不工作, – 2015-03-25 16:53:25

0

以下是全文,请注意,是可以要好得多,但我试图保持你的语法机智:

Private Sub cboState_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboState.SelectedIndexChanged 
    Load_Cities() 

End Sub 

Private Sub Load_States() 
    Dim ds As DataSet = New DataSet 
    Dim adapter As New OleDb.OleDbDataAdapter 
    Dim sql As String 
    sql = "SELECT * from tblState order by StateName ASC;" 
    adapter.SelectCommand = New OleDb.OleDbCommand(sql, con) 
    adapter.Fill(ds) 
    cboState.DataSource = ds.Tables(0) 
    cboState.ValueMember = "stateid" 
    cboState.DisplayMember = "statename" 
End Sub 

Private Sub Load_Cities() 
    On Error Resume Next 

    Dim ds As DataSet = New DataSet 
    Dim adapter As New OleDb.OleDbDataAdapter 
    Dim sql As String 
    sql = "SELECT * from tblCity where StateID = " & cboState.SelectedValue.ToString() & " order by CityName ASC;" 
    adapter.SelectCommand = New OleDb.OleDbCommand(sql, con) 
    adapter.Fill(ds) 
    cboCity.DataSource = ds.Tables(0) 
    cboCity.ValueMember = "CityID" 
    cboCity.DisplayMember = "CityName" 



End Sub 
+0

谢谢我添加StateID =“&cboState.SelectedValue.ToString()这到我的代码,它是像魅力 – 2015-03-29 15:36:29