powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос из разных БД
9 сообщений из 9, страница 1 из 1
Запрос из разных БД
    #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
Запрос из разных БД
    #38034966
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо линковать нужные вам таблички из разных баз в вашу основную mdb и там уже делать запрос к ним как к обычным таблицам одной базы.
...
Рейтинг: 0 / 0
Запрос из разных БД
    #38034988
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,

Линковать? Разве что динамически, так как путь к БД всякий раз разный, его пользователь указывает. Тут ADO довольно удобен...
Может можно отгрузить запросы в разные RecorSet, а потом как-нибудь поработать уже с ними, чтобы отфильтровать?
Слабо себе представляю, что можно сделать с этим rs, кроме как на лист вывести...
...
Рейтинг: 0 / 0
Запрос из разных БД
    #38035000
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вам скорее в форму по акцесу, там расскажут, как делать динамическую линковку. с рекордсетом у вас ничего не выйдет , они друг с другом никак не связываются.
...
Рейтинг: 0 / 0
Запрос из разных БД
    #38035001
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*форум
...
Рейтинг: 0 / 0
Запрос из разных БД
    #38035009
QValD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneвам скорее в форму по акцесу, там расскажут, как делать динамическую линковку. с рекордсетом у вас ничего не выйдет , они друг с другом никак не связываются.
Почему не выйдет? Решение "в лоб" - считать в рекордсет с одной базы, сформировать строку для запроса ко второй базе вида
Код: sql
1.
Where Key in ( .. , ... , ...)
...
Рейтинг: 0 / 0
Запрос из разных БД
    #38035012
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так это обычный цикл, а не 1 (один) гетерогенный запрос
...
Рейтинг: 0 / 0
Запрос из разных БД
    #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
Запрос из разных БД
    #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
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос из разных БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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