2016-11-12 3 views
0

Я работаю над проектом, в котором форма будет извлекать информацию из базы данных Access. У нас есть технологии, которые назначены в различные магазины, и вместо того, чтобы перечислять все магазины и назначать технику, я искал список техников и назначение магазинов. Сейчас база данных имеет 4 поля.Поиск базы данных ms-access через поле lookup & relationship

  • Gate Tech - Text Field
  • Дата истечения срока действия - Поле даты
  • Двери - Да/Нет Флажок
  • Магазины - Lookup & поле отношений, которые могут иметь множественный выбор

Моя форма имеет текстовое поле, кнопку поиска и богатое текстовое поле. Если кто-то помещает номер магазина, он ищет поле «Поиск» & и если это хранилище проверено, оно будет помещать технологию в текстовое поле rich.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim text1 As String = TextBox1.Text 
    myConnection.Open() 

    Dim lstscmd As OleDbCommand = New OleDbCommand("SELECT * FROM Table1 WHERE Stores = @Stores", myConnection) 
    lstscmd.Parameters.AddWithValue("@Stores", CInt(text1)) 

    dr = lstscmd.ExecuteReader 
    While dr.Read 
     RichTextBox1.AppendText(dr("Gate Tech").ToString + Environment.NewLine) 
    End While 
    myConnection.Close() 
End Sub 

В While dr.Read я

Роу ручки должны все быть освобождены до новых могут быть получены.

Я хотел бы это искать Stores поля для любых выбранных магазинов, и возвращает значение Gate Tech богатого текстовое поле.

Любая помощь с этим была бы весьма признательна.

+1

Похоже, вы повторно используете объектные переменные: соединение и datareader не объявлены нигде. Объекты DBProvider должны быть созданы, использованы и утилизированы по мере необходимости - что-то кажется, что все еще используется с этим читателем с последнего раза. – Plutonix

+0

'В то время как dr.Read' ->' В то время как dr.Read() 'согласно MSDN Метод чтения требует скобки https://msdn.microsoft.com/en-us/library/9kcbe65k(v=vs.110).aspx ? cs-save-lang = 1 & cs-lang = vb # code-snippet-2 – McNets

+0

@Plutonix У меня есть 'Public myConnection As OleDbConnection = Новый OleDbConnection Public dr As OleDbDataReader' под общедоступными классами и 'provider = "Provider = Microsoft.ACE .OLEDB.12.0; Источник данных = " dataFile =" C: \ Users \ Jm \ Documents \ Database15.accdb "'Измените его в своем местоположении базы данных Access connString = поставщик & dataFile myConnection.ConnectionString = connString' в разделе Form Load – Joshm

ответ

0

Я нашел, где я ошибся, и лучший способ его решить.

Вместо того, чтобы извлекать данные из поля таблицы, я создал запрос в доступе и указал на его поиск.

Dim lstscmd As OleDbCommand = New OleDbCommand("SELECT * FROM Table1 WHERE Stores = @Stores", myConnection) 
lstscmd.Parameters.AddWithValue("@Stores", CInt(text1)) 

Заменить Table1 (or your table name) с Query1 (or your query name) и он должен начать вытягивать значения.