|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
Добрый день. Есть база mdb с несколькими таблицами: Регистр - общая таблица с хранением операций деятельности предприятия. Поля (Дата, НомерОперации(уникальный), КодТипаОперации, КодКА и т.д.) СправочникКА - таблица хранящая информацию по контрагентам.Имеет поля (КодКА(уникальный), НаименованиеКА и т.д.) ТипыОпераций - таблица перечислений типов операции:Возврат, Продажа, Произведено и т.д. Имеет поля (КодТипаОперации(уникальный), РасшифровкаТипа) В качестве модуля управления использую Excel c VBA и кучей форм связанных. Загружаю данные, выгружаю с помощью библиотеки DAO. Вопрос: Возможно ли написать запрос который бы выгружал Регистр, но на место полей КодТипаОперации, КодКА подставлял наименование из таблиц СправочникКА и ТипыОпераций, используя один запрос? Сейчас делаю так: set rs = dbs.OpenRecordset ("Select * FROM Регистр") set rsKA = dbs.OpenRecordset ("Select * From СправочникКА where КодКА = '" & rs.fields("КодКА") & "'") ... на выходе сливаю в таблицу Лист1 cells(1,1) = rs.fields("Дата") ... cells(1,4) = rsKA.fields("НаименованиеКА") ... т.е. в базе: 12.03.05 | SL0002 | 12 | 0009 при выгрузке получаю 12.03.05 | SL0002 | продажа | ООО "Рога и Хвост" В реале таблица с кодами намного больше. Возможно ли как-то выборку и подстановку делать более короче ? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 10:12 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
Deys85, Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 10:27 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
qwerty112, огромное спасибо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 11:41 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
Deys85, если нет необходимости динамически генерировать строку SQL, то для возврата данных можно воспользоваться инструментом MSQuery - по сравнению с конструктором запросов акцесса возм-ти урезанные, но так же иннер джойны можно делать, плюс передавать параметры из ячеек экселя в запрос для выборки по условию (диапазон дат, к примеру или КодКА). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 12:16 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
qwerty112, ничего не пойму. Пишет следующее:"error 3075 Ошибка синтаксиса (пропущен оператор) в выражении запроса" полный тект во вложении сама функция построения запроса: Public Function LoadOperationSQL(DateStart, DateEnd As String) As String LoadOperationSQL = "SELECT Регистр.*, СправочникКА.НаименованиеКА, ТипОперации.НазваниеОперации, СправочникВидВС.НаимВС " _ & "FROM Регистр inner join СправочникКА on Регистр.КодРЦ=СправочникКА.КодКА " _ & "inner join СправочникВидВС on Регистр.КодВС=СправочникВидВС.КодВС " _ & "inner join СправочникКА on Регистр.КодКА=СправочникКА.КодКА " _ & "inner join ТипОперации on Регистр.КодОперации=ТипОперации.КодОперации " _ & "WHERE Дата between #" & DateStart _ & "# AND #" & DateEnd & "#" End Function переменные DateStart и DateEnd для указания диапазона выборки по дате. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 12:43 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
для Access еще важно правильно расставить круглые скобки в джойнах что-то типа Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 12:54 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
аа, с этим, вот - http://www.sql.ru/faq/faq_topic.aspx?fid=213 Q26 Код: vbnet 1. 2. 3. 4. 5. 6. 7.
и "пашти гарантед", - это следующее - http://www.sql.ru/faq/faq_topic.aspx?fid=157 (про даты) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 12:59 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
qwerty112, Блин, новая теперь ошибка см. вложение Функция: Public Function LoadOperationSQL(DateStart, DateEnd As String) As String LoadOperationSQL = "SELECT Регистр.*, СправочникКА.НаименованиеКА, ТипОперации.НазваниеОперации, СправочникВидВС.НаимВС " _ & "FROM ((((Регистр inner join СправочникКА on Регистр.КодРЦ=СправочникКА.КодКА) " _ & "inner join СправочникВидВС on Регистр.КодВС=СправочникВидВС.КодВС) " _ & "inner join СправочникКА on Регистр.КодКА=СправочникКА.КодКА) " _ & "inner join ТипОперации on Регистр.КодОперации=ТипОперации.КодОперации) " _ & "WHERE Дата between #" & DateStart _ & "# AND #" & DateEnd & "#" End Function Оговорюсь, модуль пишу на Excel 2003 к базе обращаюсь через DAO. По дате, все работает без подстановки. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 13:36 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
Deys85qwerty112, Блин, новая теперь ошибка см. вложение Функция: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Оговорюсь, модуль пишу на Excel 2003 к базе обращаюсь через DAO. По дате, все работает без подстановки. выделенное - лишнее КОД ТЕГАМИ ОФОРМЛЯЙ !! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 13:46 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
если не поможет, - смотри типы полей по которым делается связь в join-ах, может не совпадают ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 13:49 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
qwerty112, типы полей совпадают: КодКА - текстовый 4 байта КодТипаОперации - текст 2 байта КодВида - 2 байта ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 14:27 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
Deys85qwerty112, типы полей совпадают: КодКА - текстовый 4 байта КодТипаОперации - текст 2 байта КодВида - 2 байта и что ? "не работает" ? тогда с типами - "не верю" (с), выкладуй бд или показуй принскрины таб.в конструкторе ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 15:19 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
qwerty112, Скрины во вложении. Вызов запроса делаю следующим образом: Код: vbnet 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 17:12 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
Deys85, 1 без условия WHERE - работает ? 2 строку запроса возвращ.функцией покачи (БЕЗ переменных, ту строку по которой будет открыватся рекордсет) 2 в Акцессе создай запрос с этим скл - будет работать ? 3 ключ в таблицу Регистр сделай 4 поле КодРЦ - ты зачем показывал в Регистр ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2012, 17:30 |
|
SQL запрос в VBA на выборку данных из нескольких таблиц mdb
|
|||
---|---|---|---|
#18+
Еще раз предлагаю исп-ть МС Квери без всякого излишества типа ДАО. Параметры DateStart и тп в секцию Вера передаются на раз из ячеек с листа книги Экселя. Сегодня по-быстрому к своей акцессной базе прототип клиента слепил с несколькими внешними запросами без всяких заморочек с ДАО/АДО. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2012, 21:07 |
|
|
start [/forum/topic.php?fid=61&msg=37921542&tid=2175454]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 323ms |
total: | 438ms |
0 / 0 |