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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2011, 11:58   #1
Dimarik163
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 13
По умолчанию Сложение 2-х таблиц из БД

Здравствуйте.

Имеются две разные базы данных с одинаковоми полями. Нужно их сложить в одну таблицу при помощи макроса.

Например
Код:
БД1:                          БД2:
№    ФИО                    №    ФИО
1     Иванов                1     Кузнецов
2     Петров                2     Сидоров
Нужно при помощи макроса одним запросом сделать таблицу вида:
№ ФИО
1 Иванов
2 Петров
1 Кузнецов
2 Сидоров
Dimarik163 вне форума Ответить с цитированием
Старый 01.06.2011, 12:11   #2
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от Dimarik163 Посмотреть сообщение
Здравствуйте.

Имеются две разные базы данных с одинаковоми полями. Нужно их сложить в одну таблицу при помощи макроса.

Например
Код:
БД1:                          БД2:
№    ФИО                    №    ФИО
1     Иванов                1     Кузнецов
2     Петров                2     Сидоров
Нужно при помощи макроса одним запросом сделать таблицу вида:
№ ФИО
1 Иванов
2 Петров
1 Кузнецов
2 Сидоров
так чего тут городить вот Вам запрос приспосабливайте

Код:
select a.[№],a.[ФИО]
from БД1 a
union
select b.[№],b.[ФИО]
from БД2 b
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 01.06.2011, 12:43   #3
Dimarik163
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 13
По умолчанию

Проблема в том что эти базы данных на разных серверах.
Код:
Array("ODBC;DSN= БД1 ;Driver=Firebird/InterBase(r) driver;Dbname=192.168.30.1")
Array("ODBC;DSN= БД2 ;Driver=Firebird/InterBase(r) driver;Dbname=192.168.50.1")

Последний раз редактировалось Dimarik163; 01.06.2011 в 23:57.
Dimarik163 вне форума Ответить с цитированием
Старый 01.06.2011, 13:05   #4
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от Dimarik163 Посмотреть сообщение
Проблема в том что эти базы данных на разных серверах.
Код:
Array("ODBC;DSN= БД1 ;Driver=Firebird/InterBase(r) driver;Dbname=192.168.30.1)
Array("ODBC;DSN= БД2 ;Driver=Firebird/InterBase(r) driver;Dbname=192.168.50.1)
тогда открывайте два соединения, два рекордсета,
и почередно выгружайте их на лист,
запрос будет простым select * from tbl

Cells(1, 1).CopyFromRecordset rs
Cells(1+ rs.Count, 1).CopyFromRecordset rs2
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 01.06.2011, 18:52   #5
Dimarik163
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 13
По умолчанию

Код:
Sub Макрос()

Source1 = "БД1"
Source2 = "БД2"

CommandText = "select * from tbl"
  
Set cn1 = CreateObject("ADODB.Connection")
Set cn2 = CreateObject("ADODB.Connection")

cn1.Open Source1
cn2.Open Source2

Set rs = cn1.Execute(CommandText)
Set rs2 = cn2.Execute(CommandText)

Cells(1, 1).CopyFromRecordset rs
Cells(1 + rs.Count, 1).CopyFromRecordset rs2


rs.Close
cn.Close
rs2.Close
cn2.Close


End Sub
На строке:
Код:
Cells(1 + rs.Count, 1).CopyFromRecordset rs2
появляется ошибка 438: Object doesn't support this property or method.

Где я накосячил?
Dimarik163 вне форума Ответить с цитированием
Старый 01.06.2011, 19:03   #6
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от Dimarik163 Посмотреть сообщение
Код:
Sub Макрос()

Source1 = "БД1"
Source2 = "БД2"

CommandText = "select * from tbl"
  
Set cn1 = CreateObject("ADODB.Connection")
Set cn2 = CreateObject("ADODB.Connection")

cn1.Open Source1
cn2.Open Source2

Set rs = cn1.Execute(CommandText)
Set rs2 = cn2.Execute(CommandText)

Cells(1, 1).CopyFromRecordset rs
Cells(1 + rs.Count, 1).CopyFromRecordset rs2


rs.Close
cn.Close
rs2.Close
cn2.Close


End Sub
На строке:
Код:
Cells(1 + rs.Count, 1).CopyFromRecordset rs2
появляется ошибка 438: Object doesn't support this property or method.

Где я накосячил?
Везде ....................
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 01.06.2011, 19:16   #7
Dimarik163
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 13
По умолчанию

Подскажите как надо.
Dimarik163 вне форума Ответить с цитированием
Старый 01.06.2011, 21:54   #8
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от Dimarik163 Посмотреть сообщение
Подскажите как надо.
ну если подключение и создание рекордсета у Вас проходит нормально, то накосячил я ..........бывает

Код:
Cells(1 + rs.RecordCount, 1).CopyFromRecordset rs2
да и у Вас на самом деле есть таблица tbl ?
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 01.06.2011 в 21:58.
R Dmitry вне форума Ответить с цитированием
Старый 01.06.2011, 22:07   #9
Dimarik163
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 13
По умолчанию

Нету, запрос огромный - я не стал его сюда копировать.
Dimarik163 вне форума Ответить с цитированием
Старый 02.06.2011, 08:05   #10
Dimarik163
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 13
По умолчанию

Цитата:
Сообщение от R Dmitry Посмотреть сообщение

Код:
Cells(1 + rs.RecordCount, 1).CopyFromRecordset rs2
Теперь ошибка 1004: Application-difined or object-defined error.
Dimarik163 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cформировать из 30 таблиц 1 500 000 000 таблиц, за 2 часа. kola672 Фриланс 12 02.11.2010 20:43
Сформировать из 30 таблиц 15 000 таблиц, за 15 минут. kola672 Фриланс 31 19.10.2010 01:22
Сложение операнд. rosemary Помощь студентам 7 23.06.2010 17:06
Сложение в БД Oleg Romanchuk Помощь студентам 5 24.11.2009 09:30
Сложение Droid Общие вопросы Delphi 14 07.05.2008 13:23