2013-06-06 3 views
4

Я пытаюсь заполнить combobox с результатом SQL Я думаю, что моя проблема заключается в обработке данных в форме данных.VB | Загрузка SQL Query в Combobox

Dim sql As String 
    Dim sqlquery As String 
    Dim ConnectionString As String 
    ConnectionString = "Data Source=(local);Initial Catalog=Control;Persist Security Info=True;User ID=user;Password=pass" 
    sqlquery = "Select dbName from Databases" 

    Using connection As SqlConnection = New SqlConnection(ConnectionString) 
     connection.Open() 
     Using conn As SqlCommand = New SqlCommand(sqlquery, conn) 
      Dim rs As SqlDataReader = comm.ExecuteReader 
      Dim dt As DataTable = New DataTable 
      dt.Load(cmboxDatabaseName) 
     End Using 'comm 
    End Using 'conn 

Когда я запускаю программу, я просто смотрю на грустное пустое поле со списком.

ответ

5

Почти правильно, но вам нужно загрузить данные, используя DataReader.
Тогда Ассинг в DataTable в DataSource из Combo

Using connection As SqlConnection = New SqlConnection(ConnectionString) 
    connection.Open() 
    Using comm As SqlCommand = New SqlCommand(sqlquery, connection) 
      Dim rs As SqlDataReader = comm.ExecuteReader 
      Dim dt As DataTable = New DataTable 
      dt.Load(rs) 
      ' as an example set the ValueMember and DisplayMember' 
      ' to two columns of the returned table' 
      cmboxDatabaseName.ValueMember = "IDCustomer" 
      cmboxDatabaseName.DisplayMember = "Name" 
      cmboxDatabaseName.DataSource = dt 
    End Using 'comm 
End Using 'conn 

Также можно установить свойство выпадающего ValueMember к имени столбца, который будет использоваться в качестве ключа для дальнейшей обработки и DisplayMember собственности на имя столбца что вы хотите отобразить в виде текста на выбор для вашего пользователя

+0

Я переместил этот код на кнопку события нажатия кнопки. По крайней мере, его раздувание теперь LOL ConnectionString = "ConnectionString = Data ... заметил, что сразу с места в карьер Изменено на ConnectionString =" Источник данных = (локальный); Начальный каталог = Контроль; Постоянная информация о безопасности = Истина , User ID = user; Password = pass " Теперь говорит Соединение *** Выделено ConnectionString =" ConnectionString = Источник данных = (локальный); Начальный каталог = Контроль; Постоянная информация о безопасности = Истина; Идентификатор пользователя = пользователь; Пароль = проезд " - мое мошенничество неверно? – UPGRAYEDD

+0

Наделось, что никто не пострадал :-) Не могли бы вы сообщить мне сообщение об ошибке? – Steve

+0

lol we jsut потерял несколько людей поддержки нет biggy При установлении соединения с SQL Server возникла связанная с сетью или конкретная ошибка экземпляра. Сервер не найден или не был доступен. Проверьте правильность имени экземпляра и настройте SQL Server для удаленного подключения. (поставщик: поставщик Named Pipes, ошибка: 40 - не удалось открыть соединение с SQL Server) – UPGRAYEDD

1

вы также можете сделать это, как

Dim Con = New SqlConnection(_ConnectionString) 
Dim cmdAs New SqlCommand 
Dim dr As New SqlDataReader 

    Try 
     If Con.State = ConnectionState.Closed Then 
      Con.Open() 

      cmd.Connection = Con 
      cmd.CommandText = "Select field1, field2 from table" 


      dr = cmd.ExecuteReader() 

      ' Fill a combo box with the datareader 
      Do While dr.Read = True 
       ComboBoxName.Items.Add(dr.GetString(0)) 
       ComboBoxName.Items.Add(dr.GetString(1)) 
      Loop 

      Con.Close() 
     End If 

    Catch ex As Exception 
     MsgBox(ex.Message) 

    End Try 

Надеется, что это работает для вас.

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