![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирование данных между двумя базами. [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