Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Копирование данных между двумя базами. [D5, MSSQL, Access]


yozhik ©   (2002-04-09 14:34:00) 

Уважаемые мастера, подскажите как реализовать копирование данных между Access и MS SQL Server, используя только средства Delphi? но без использования BDE.


sniknik   (2002-04-12 12:05:00) [1]

мне надо было перебрасывать данные с вычислениями и условием по типу если в поле стоит 1 то пишем в два разных поля значения "kg", "yes". ну и условия по ходу менялись. а с DTS до таких вещей я не дошол. (просто переброс возможен и прост :-) а вот и изменениями.. нет можно там и sql запрос вставить но линк мне показался проще а после некоторых глюков с ним (в основном изза кривых рук) начали переделывать через функции (openrowset). и вот этот вариант устроил больше всех остальных. все можно просто менять из программы (запросы формировать).


yozhik   (2002-04-11 20:58:00) [2]

а можно узнать чем не подошел DTS?? может и мне его не использовать ??


sniknik   (2002-04-11 13:01:00) [3]

нашел выход ..... DTS, ADO ???? а мы про что говорили? я был уверен что про ADO. все мои примеры для него (по другому не проверял) и от DTS я почти сразу отказался не подходит он мне и сказать ничего не могу. а для ADO нужен MDac (в 2000-х уже есть), (DCom95 есть уже в 98), и драйвера Odbc,Jet что будеш использовать.


yozhik   (2002-04-10 20:49:00) [4]

Используя OpenRowset c Jet ругается ... таже ошибка что и при создании линка в ручную.

Использование ODBC предусматривает использование BDE - это не допустимо...

Но я кажется нашел выход - использование DTS, но возникает еще один вопрос: "Какие файлы нужны на "голой" машине для использования DTS, ADO".
Это первый вариант, второй (не желательный) использование построчного копирования.... мне это не нравится


sniknik   (2002-04-10 09:08:00) [5]

TransferDatabase хорошо для одноразового переноса, для обмена (если и там и там работают) и информация между базами постоянно обновляется (причем выборочно), не пойдет. я так понял yozhik надо делать перенос часто (у меня было такое решение я так и понял).
Если это не так то тогда действительно все что тут говорилось лишнии заморочки.


unfam   (2002-04-10 00:19:00) [6]

Осмелюсь предложить решение, основанное на использовании аксесовской функции TransferDatabase.


sniknik   (2002-04-09 19:32:00) [7]

должно. у нас с кассы работало под 98 виндами, mdb лежит на ней а линковались к нему с сервера под NT. (все операции с кассы).
правда потом отказались от этого (линков много и кажый админ считал своим долгом SQL чистить от всего лишнего и ему непонятного)
возились с этим делом и правду долго. но оно рабочее точно.

а через OpenRowset не пробовал?
по типу
select * from OpenRowset("MSDASQL.1", "Driver={Microsoft dBase Driver (*.dbf)};DBQ=D:\Work\Zip;", "select * from CashSail")
но это для dbf и этот драйвер не позволяет запись (на INSERT ругается), надо через jet.

и глупый вопрос Jet, Mdac везде стоят?

не получится можно и с другого конца взятся. прописать в ODBC алиас MSSQL и у же к нему из Access-а цепляться. Только тут я точно не знаю (не помню) как в дельфях эту связь организовать. Помню пробовал (к DBF) просто получилось и бросил. Разници большой между MSSQL и DBF в этом случае нет, одинаково к алиасу обращаешся.


yozhik   (2002-04-09 18:42:00) [8]

пробовали, все равно работает только когда сидишь на серваке, а работать надо с локалки :((((


sniknik   (2002-04-09 18:10:00) [9]

попробуй сначала руками линк создать и настроить как тебе надо и чтоб работало. после всенастройки можно процедурами делать.


sniknik   (2002-04-09 18:06:00) [10]

не будет ругатся если Base.mdb на сервер положить и там же линкед делать (пляшеш как от печки токо от сервера где mssql). если линк делать на локал то будут заморочки с правами доступа уже в NT. но в принципе путь можно даже так указывать \\локал\...

и игнорировать кое какие права можно
EXEC sp_addlinkedsrvlogin "MBase", false, NULL, NULL, NULL


yozhik   (2002-04-09 14:58:00) [11]

EXEC sp_addlinkedserver
@server = "MBase",
@provider = "Microsoft.Jet.OLEDB.4.0",
@srvproduct = "OLE DB Provider for Jet",
@datasrc = "D:\ZIP\Base.mdb"


не катит, это работает когда ты сидишь на сервере, а когда на удаленном компе ругается Jet.


sniknik   (2002-04-09 14:44:00) [12]

тот же вопрос (просмотри форум там еще есть)
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1018266603&n=1


Наверх

Титульная страница Поиск, карта сайта Написать письмо