Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2014, 21:13   #1
Elliniel
Новичок
Джуниор
 
Регистрация: 01.04.2014
Сообщений: 2
По умолчанию Запрос в БД access из листа Excel

Добрый день.

Я новичок в Access и VBA подскажите, пожалуйста. Есть база данных, в ней два столбца "Адрес" и "Наименование", так же есть екселевский документ с поддержкой макросов. В этот документ я добавил выпадающий список (combobox), смысл такой, что пользователь начинает вбивать текст в этот combobox и через select происходит выборка по вхождению слов из БД из столбца "Наименование", далее пользователь выбирает необходимое ему значение и нажимает enter, после этого должно подставиться значение из поля "Адрес" равное выбранному ему значению "Наименование" в ячейку экселевского документа. Коннект к БД я реализовал, но select'ом не могу разобраться, как его корректно реализовать т.к. он возвращает ошибки или вообще ничего не возвращает.

Запрос я делаю вот так:
Код:
Dim con As New ADODB.Connection
Dim rst As New ADODB.Recordset
Set rst = con.Execute("SELECT of_name FROM post_db where of_name like '" & Лист1.ComboBox1.Value & "'")
Elliniel вне форума Ответить с цитированием
Старый 15.04.2014, 00:50   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Elliniel.
в Вашем сообщении речь о нескольких задачах которые для решения необходимо разделить
например так:
1. подключение к БД (коннект)
насколько можно понять из текстам выполняться конструкция будет в Excel, значит библиотека ADO к проекту подключена
"..Коннект к БД я реализовал.." - не указано как именно он реализован
в выложенном коде он только объявлен, но не открыт, откройте его например так:
Код:
Dim con As New ADODB.Connection
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB.mdb;Persist Security Info=False"
' строка подключения к БД А2003, для А2007 измените OLEDB.12.0
If Not con.State = 1 Then Exit Sub 'не открыт
2. получение списка
для этого и используется обращение к рекордсету, но возвращаемый SQL конструкцией
набор записей, стоит ограничить например до 20 и только потом перебором заполнять ComboBox
Код:
Const sQ = "SELECT TOP 20 of_name FROM post_db where of_name like '" 
Dim s As String
s = Лист1.ComboBox1.Text + "%' Order By of_name"
Dim rst As New ADODB.Recordset
Set rst = con.Execute(sQ + s)
Лист1.ComboBox1.Clear
Do Until rst.Eof
    Лист1.ComboBox1.AddItem rst(0)
    rst.MoveNext
Loop
3. выбор в списке
для решения этой задачи достаточно
Код:
Const sQ = "SELECT TOP 1 of_Адрес FROM post_db where of_name ='" 
Dim s As String
s = Лист1.ComboBox1.Text + "'"
If Not con.Execute(sQ + s).Eof Then 
    s = con.Execute(sQ + s).Fields(0)
    Cells(1, 1) = s
End If
Все эти кусочки располагаются в разных процедурах для обработки разных событий, надеюсь с этим Вы разберётесь.

Успехов Вам.
Евгений.
P.S. "..Есть база данных, в ней два столбца.." - в отношении таблиц БД термин "столбец" мало приемлем
больше подойдёт - "поле", "атрибут", ...
Teslenko_EA вне форума Ответить с цитированием
Старый 19.04.2014, 07:59   #3
Elliniel
Новичок
Джуниор
 
Регистрация: 01.04.2014
Сообщений: 2
По умолчанию

Спасибо большое!
Elliniel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт-экспорт данных Excel-Access, и из Access-Excel Людвиг Microsoft Office Access 3 27.10.2011 14:38
Обновление листа excel -Anton- Microsoft Office Excel 3 05.09.2011 12:08
Импорт листа Excel из ячейки OLE базы данных Access Gawwws Microsoft Office Excel 1 14.01.2011 00:58
Запрос с датами и временем к Access [D7, Access] alexandr2010 БД в Delphi 3 26.07.2010 22:19
Запрос на часть листа по условию в определенной ячейке Stilet Microsoft Office Excel 3 27.05.2010 11:42