2015-03-25 5 views
0

Я создаю форму, в которой пользователь должен указать имя штата и название города. Где город зависит от государства.populate combobox из выбранного элемента другого combobox

Код для заполнения город:

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

+0

Это _looks_, как будто вы не передаете идентификатор состояния во второй запрос, просто текст '' st "', а не значение переменной 'st'. Если у вас есть столбец в этой таблице, называемый 'st', я ожидаю, что вы увидите исключение SQL? –

+0

У меня есть имя столбца stateid на вкладке города, в котором также присутствует statestab –

ответ

0

Вам понадобится обработчик в Selected_Index_Changed в вашем State Combobox. Оттуда называют свою рутину, чтобы загрузить в городе, в SQL для города, вы должны были бы сделать

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

, но не работает, –

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() для моего кода, и он работает как шарм –

Смежные вопросы