Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос из разных БД / 9 сообщений из 9, страница 1 из 1
12.11.2012, 16:24
    #38034930
Shizuku
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из разных БД
У меня есть вложенный запрос, нужно вернуть из него данные БД2 и выполнить по ним поиск в БД1
Условно конструкция такая:

Код: sql
1.
2.
SELECT * FROM БД1
WHERE ключ IN (SELECT ключ FROM БД2)



Но я не могу выполнить вложенный запрос к другой базе, пока не отключусь от первой. Возможно это делают как-то по-другому?

База из старого FoxPro (dbf), подключаюсь конструкцией вида:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
' Переменная с подключением
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
' Путь к базе
Dim cstrBase As String

cstrBase = "Здесь указываем путь в нужном формате к папке с таблицами dbf"

With cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & cstrBase & ";Extended Properties=dBase IV"
    .Open

Set rs = .Execute("Сюда пишем запрос согласно диалекта SQL")

'Выкидываем результат запроса на лист Excel

Cells(3, 1).CopyFromRecordset rs
' Закрываем соединение
.Close
End With



Как видно, даже если я создам второе подключение к нужной мне БД2 и назову его, к примеру cn2, то я не смогу засунуть этот "cn2" в свой SQL запрос по идентификатору cn1. Меня не поймут.
...
Рейтинг: 0 / 0
12.11.2012, 16:42
    #38034966
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из разных БД
надо линковать нужные вам таблички из разных баз в вашу основную mdb и там уже делать запрос к ним как к обычным таблицам одной базы.
...
Рейтинг: 0 / 0
12.11.2012, 16:51
    #38034988
Shizuku
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из разных БД
Konst_One,

Линковать? Разве что динамически, так как путь к БД всякий раз разный, его пользователь указывает. Тут ADO довольно удобен...
Может можно отгрузить запросы в разные RecorSet, а потом как-нибудь поработать уже с ними, чтобы отфильтровать?
Слабо себе представляю, что можно сделать с этим rs, кроме как на лист вывести...
...
Рейтинг: 0 / 0
12.11.2012, 16:56
    #38035000
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из разных БД
вам скорее в форму по акцесу, там расскажут, как делать динамическую линковку. с рекордсетом у вас ничего не выйдет , они друг с другом никак не связываются.
...
Рейтинг: 0 / 0
12.11.2012, 16:56
    #38035001
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из разных БД
*форум
...
Рейтинг: 0 / 0
12.11.2012, 16:59
    #38035009
QValD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из разных БД
Konst_Oneвам скорее в форму по акцесу, там расскажут, как делать динамическую линковку. с рекордсетом у вас ничего не выйдет , они друг с другом никак не связываются.
Почему не выйдет? Решение "в лоб" - считать в рекордсет с одной базы, сформировать строку для запроса ко второй базе вида
Код: sql
1.
Where Key in ( .. , ... , ...)
...
Рейтинг: 0 / 0
12.11.2012, 17:01
    #38035012
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из разных БД
так это обычный цикл, а не 1 (один) гетерогенный запрос
...
Рейтинг: 0 / 0
12.11.2012, 21:20
    #38035376
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из разных БД
ShizukuУ меня есть вложенный запрос, нужно вернуть из него данные БД2 и выполнить по ним поиск в БД1
Условно конструкция такая:

Код: sql
1.
2.
SELECT * FROM БД1
WHERE ключ IN (SELECT ключ FROM БД2)


так обе базы - дбф-ы ?

как-то так должно быть
в коннекте к БД с tab1
Код: sql
1.
2.
SELECT * FROM tab1
WHERE ключ IN (SELECT ключ FROM tab2 in 'Путь'[dBase IV;] )
...
Рейтинг: 0 / 0
13.11.2012, 10:31
    #38035783
Shizuku
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из разных БД
qwerty112,

Интересная информация. С её помощью вышел на http://support.microsoft.com/kb/113701/ru , изучаю. Пока удалось запустить лишь по способу №1:

Код: sql
1.
2.
3.
4.
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос из разных БД / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]