Есть 2 разные базы Access a1.mdb - a2.mdb , в них есть одинаковые таблицы , как используя Delphi+Ado добавить все данные из всех таблиц a1 в такие же таблицы базы a2? Можно сделать конечно через два ADOTABLE пройтись в цикле по каждой таблице первой базы занося при этом в такие же подключаемые таблицы второй, но хотелось бы знать может есть более правильный способ, например через Insert Into t1 in a1 Select * from t1 in a2. И как в таком случае обратиться к базам a1 и a2? Какие компоненты использовать при этом? Спасибо. Буду благодарен за любые советы.
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
08-05-2009 04:02 | Сообщение от автора вопроса
Вот такое решение получилось:
a1(t1….t12) – база в которую загружаем(с таблицами)
a2(t1….t12) - база из которой загружаем
структуры баз a1 a2 и таблиц в базах одинаковые!
AdoConnection :
ConnectionString настраиваем на a1 , но на a2 тоже работает правда a1 всегда есть , а если загружаемых баз несколько то лучше на a1.
Provider= Microsoft.Jet.OLEDB.4.0
LoginPrompt=False
AdoQuery2 связать с AdoConnection
Edit1 – путь к a1
Edit2 - путь к a2
procedure TForm1.Button3Click(Sender: TObject);
begin
AdoQuery2.Active:=False;
AdoQuery2.SQL.Clear;
AdoQuery2.SQL.Add('Insert into t1 in ' +'"'+
edit1.Text +'"'+'select * from t1 in ' +'"'+
edit2.text+'"');
AdoQuery2.ExecSQL;
end;
Вот и все , никаких других компонентов не понадобилось, оказалось все проще , чем казалось. Можно прикрутить цикл и делать загрузку из всех баз во все таблицы. Спасибо всем кто отозвался! Может я чего не учел? Готов выслушать поправки и замечания.
08-05-2009 01:32 | Комментарий к предыдущим ответам
Не забывайте, что работа идет через Jet SQL (родной движек Access'а), а это значит что "диалект" у него свой, в некоторых случаях отличный от SQL других БД (MS SQL, Oracle, Firebird и др.).
Найдите у себя в %ProgramFiles%\Common Files\Microsoft Shared\OFFICExx\1049\ файл JETSQL40.CHM - там все написано (в названии папки OFFICExx - xx - это номер версии установленного офиса).
08-05-2009 01:26 | Комментарий к предыдущим ответам
>>>Тут понадобятся не только два ADOTable, но и 2 ADOConnection. Баз-то две.
Как раз с двумя ADOConnection - это через цикл, а вот один ADOConnection и путь к другой БД в IN ''... Читайте хелп! :)
Тогда посмотрите справку по DAO и Microsoft JET SQL. Эти файлы входят в стандартную поставку MS Office (соответственно dao*.chm и jet*.chm). В первом точно есть информация о том, как прилинковать таблицы из внешней базы данных, во втором - использование языка JET SQL.
А средствами Delphi+Ado обязательно? Может проще всего воспользоваться пунктом Сервис-> Репликация-> Создать реплику или Портфелем от Windows или просто прилинковать таблицы a2.mdb к a1.mdb и отдать все Access'у.
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.