|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
Доброго дня господа ! Имею один RecordSet к сетевому источнику Имею второй RecordSet к локальному источнику Необходимо на стороне клента совместить два RecordSet (структура и типы полей одинакова) Подсажите как это сделать ? Буду признателен за код ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 19:09 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
Что в вашем понимании "совместить"? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 19:34 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
Shocker.Pro, Результат серверного RecordSet-а F1 F2 --------- A1 A2 N1 N2 R1 R1 Результат локального RecordSet-а F1 F2 --------- T1 T2 K1 K2 L1 L1 В результате должен получить RecordSet F1 F2 --------- A1 A2 N1 N2 R1 R1 T1 T2 K1 K2 L1 L1 Можно реализовать через ВРЕМЕННОЙ RecordSet и добавить в него два других Хотелось бы реализовать ОТКЛЮЧИВ (один из уже выполненных) от источника и добавив к нему другой Или предложите Ваш Вариант, может біть возможно одной командой совместить два обьекта ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 20:07 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
Клиент на чём написан? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 20:09 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
HOME_XМожно реализовать через ВРЕМЕННОЙ RecordSet и добавить в него два других не уверен, но, имхо, через выгрузку/загрузку в DOMDocument - должно быть быстрее, чем просто заполнять в цикле в любом случае, такой код будет универсальный для любых рекордсетов, - можно сделать функцию, которая будет принимать несколько рекордсетов, и возвращать один объединённый в xmlDoc1 - стоит "грузить" больший рекордсет Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
АДО должно быть версии 2.5 и выше ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 21:08 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
HOME_XИмею один RecordSet к сетевому источнику Имею второй RecordSet к локальному источнику даа, и кстати, а почему нельзя было сделать сразу один гетерогенный UNION-запрос к обоим источникам ? нередактируемый, правда, будет ... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 21:25 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
qwerty112HOME_XИмею один RecordSet к сетевому источнику Имею второй RecordSet к локальному источнику даа, и кстати, а почему нельзя было сделать сразу один гетерогенный UNION-запрос к обоим источникам ? нередактируемый, правда, будет ... Покажите пожалуйста примером 1. запрос к Oracle 2. запрос к Excel ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 01:32 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
AndreTMКлиент на чём написан? Клиент это ODBC драйвер под Excel страницу ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 01:33 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
qwerty112можно сделать функцию, которая будет принимать несколько рекордсетов Где-то так и хочу ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 01:39 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
HOME_Xqwerty112пропущено... даа, и кстати, а почему нельзя было сделать сразу один гетерогенный UNION-запрос к обоим источникам ? нередактируемый, правда, будет ... Покажите пожалуйста примером 1. запрос к Oracle 2. запрос к Excel что-то типа такого Код: vbnet 1. 2. 3. 4. 5. 6. 7.
навсякей http://www.connectionstrings.com/microsoft-odbc-for-oracle/ ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 01:47 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
HOME_XХотелось бы реализовать ОТКЛЮЧИВ (один из уже выполненных) от источника и добавив к нему другойКак вариант - сначала, используя оракловский провайдер, сделать запрос и выгрузить рекордсет на лист; а затем уже, используя экзелевский провайдер, сделать запрос внутри книги к двум таблицам. Конечно, имеет смысл только в том случае, если результат, подтягиваемый из оракловской базы, не слишком объёмен... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 02:06 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
qwerty112, Понял - типа Provider=Microsoft.Jet.OLEDB.4.0;Data Source={FULL}.xls;Extended Properties="Excel 8.0;HDR=YES;IMEX=1" select * from [Excel 8.0;HDR=YES;IMEX=1;DATABASE={?}.xls].[PRODUCT] Сейчас буду пробовать ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 03:11 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
HOME_Xqwerty112можно сделать функцию, которая будет принимать несколько рекордсетов Где-то так и хочу нуу, я вот такое что-то имел в виду Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 11:11 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
qwerty112"select f1, f2, .... from OracleTab in ''[ODBC;Driver={Microsoft ODBC for Oracle};Server=myServerAddress;Uid=myUsername;Pwd=myPassword;]" Извините не могу воспроизвести именно такой синтаксис [ODBC;Driver т.е. ссылку на ODBC Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Подскажите пожалуйста в чем причина ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 15:07 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
А зачем вам второй раз указывать провайдера? У вас же источник уже подключен, вплоть до файла. Сделайте что-то вроде этого: Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Кстати, если в коннекшене указать всё то же самое, но с ;Data Source=''; , а в SELECT'е - полные пути к книгам, то можно извлечь данные из нескольких файлов... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 15:58 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
[quot AndreTM] А зачем вам второй раз указывать провайдера? [/src] В продуктиве у меня будет два РАЗНЫХ драйвера один Excel второй Oracle но так как сходу такой финт неудался, (подумал что ошибаюсь с коннектString Oracle) изображил для примера такой доступ - тоже не получилось Приведите пример пожалуйста, такое ВООБЩЕ возможно rsA.Source = "select F1 from [RR] in '[ODBC;Driver={Driver do Microsoft Excel(*.xls)};DBQ=C:\Temp\RR10.xls]'" ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 16:10 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
HOME_Xqwerty112"select f1, f2, .... from OracleTab in ''[ODBC;Driver={Microsoft ODBC for Oracle};Server=myServerAddress;Uid=myUsername;Pwd=myPassword;]" Извините не могу воспроизвести именно такой синтаксис [ODBC;Driver т.е. ссылку на ODBC Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Подскажите пожалуйста в чем причина причина в одинарных кавычках это НЕ у меня "рука дрогнула", это такой синтаксис если НЕ файловый, а ОДБЦ источник, то идёт пара апострофов, а потом в прямых скобках - строка подключения. Код: sql 1.
для файловых источников, в этих апострофах указываеться путь а конкретно в цитируемом посте - ерунда написанна не нужно в уже имеющемся коннекте к файлу C:\Temp\RR10.xls , дополнительно указывать одбц подключение к ЭТОМУ ЖЕ ФАЙЛУ такой синтаксис нужен тогда, когда есть подключение (Jet или ACE) к фалу Экселя/Акцесса/даа хоть к тхт-файлу и нужно получить данные из другого источника (Оракле, МС СКЛ и т.д.) внимательно посмотрите пример тут - 15411143 тут, скорее, может возникнуть проблема с параметрами подкл.к Ораклу, так как там параметров "до чёртиков" ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 16:42 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
qwerty112, Спасибо уважаемый Qwerty112 Все получилось - делал так. Код: vbnet 1. 2.
Результат один RecordSet. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 17:19 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
HOME_X, А как реально выполняеться такие запросы Имею в виду можно ли сказать Это синтаксис MJet select F1 from [Excel 8.0;HDR=YES;IMEX=1;DATABASE=C:\Temp\RR10.xls].[RR] Это синтаксис Oracle select DESCR from ....... rsA.Source = "select F1 from [Excel 8.0;HDR=YES;IMEX=1;DATABASE=C:\Temp\RR10.xls].[RR] union all select DESCR from [ODBC;Driver={Oracle in OraClient11g_home1};UID=LOGIN;PWD=PASSWORD;DBQ=XXXX.XX;Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xx.xx.x.xx)(PORT = 1521))(CONNECT_DATA=(SERVER=DEDICATED)(SID = RCC)))].[XXX.TABLE]" Или господин MJet - сам интерпретирует запросы ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 17:37 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
HOME_X, Т.е. мне необходимо выполнить СИНТАКСИС Oracle, а не MJet !!!! rsA.Source = "select F1 from [Excel 8.0;HDR=YES;IMEX=1;DATABASE=C:\Temp\RR10.xls].[RR] union all select DESCR as F1 from [ODBC; SQLTEXT=select DESCR from BRANCH+навороті Oracle ;Driver={Oracle in OraClient11g_home1};UID=zz;PWD=zz;DBQ=zz.zz;Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zz.zz.z.zz)(PORT = zzzz))(CONNECT_DATA=(SERVER=DEDICATED)(SID = zzz)))].[ SQLTEXT ]" ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 18:07 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
ODBC/ADO/DAO имеют собственный синтаксис для каждого из провайдеров, так что все возможности сиснтаксиса Оракл вы все равно не получите. Я вот точно не знаю, - если используется несколько разных дайверов/провайдеров - то какой синтаксис приемлем? Первого провайдера? Последнего? Только "общий" для всех? Поэтому я и посоветовал выше - сначала скачать данные из Оракл, используя провайдер для него (и возможности этого провайдера), загнать полученную выборку в Excel, затем уже использовать Excel-евский провайдер JET или ACE.OLEDB для выборки с джойнами только на Excel-источниках... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 18:33 |
|
Совместить результаты двух ADODB.Recordset
|
|||
---|---|---|---|
#18+
AndreTM, Ваша последовательность действия четка и ясна. А уверена, что MJet - этого не может ? У SAS (по моему) был такой алгоритма работы SQLTEXT=select DESCR from BRANCH+навороты Oracle это Native код - выполненный провайдером [ODBC.......Driver={Oracle.....] Образованный DataSet c названием SQLTEXT и он обрабатываеться верхним провайдером в виде таблицы [SQLTEXT] OPENROWSET() rsA.Source = "select F1 from [Excel 8.0;HDR=YES;IMEX=1;DATABASE=C:\Temp\RR10.xls].[RR] union all select DESCR as F1 from [ODBC;SQLTEXT=select DESCR from BRANCH+навороті Oracle;Driver={Oracle in OraClient11g_home1};UID=zz;PWD=zz;DBQ=zz.zz;Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zz.zz.z.zz)(PORT = zzzz))(CONNECT_DATA=(SERVER=DEDICATED)(SID = zzz)))].[SQLTEXT]" ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 18:52 |
|
|
start [/forum/topic.php?fid=60&msg=38525850&tid=2156576]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 399ms |
0 / 0 |