Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.26;
Скачать: CL | DM;

Вниз

Доступ из MS Access к данным из других СУБД с пом. SQL   Найти похожие ветки 

 
Nikolai_S ©   (2002-09-02 17:24) [0]

Вопрос такой: как из Access с помощью SQL-запроса получить доступ к данным других СУБД? Например, можно сделать такой запрос:
INSERT INTO [DestinationTable] SELECT * FROM [SourceTable] IN "AccessFile.mdb"

Можно ли так же построить запрос, но данные брать из другой СУБД (например SQL Server). Ведь можно же произвести импорт из баз данных ODBC с помощью мастера.


 
Mike Kouzmine   (2002-09-02 18:03) [1]

Можно. Сделай связь с таблицами и используй их в аксесовском запросе, а из делфи - как обычно.


 
Nikolai_S ©   (2002-09-02 18:17) [2]

А программно это можно как-то сделать?


 
Mike Kouzmine   (2002-09-02 18:23) [3]

Скорее всего можно, правда ни разу не делал, но надо или в аксесе написать функцию на подключение таблицы (передавать параметр) и выполнять ее, или через закладку Servers посылать соответствующие команды.


 
sniknik ©   (2002-09-02 18:36) [4]

Все что можно делать в Access то можно и программно (пока получалось) и линк скорей всего тоже но как конкретно? разбирайся читай хелпы по ADOX, DAO, MSJERO.
только зачем это нужно и так есть прямой доступ
dBase, Excel, Exchange, Lotus, Paradox, Text форматы (*.txt;*.csv;*.tab;*.asc)
чего еще?
Надо круче делай из MSSQL оттуда почти до всего достучишся.


 
Nikolai_S ©   (2002-09-03 11:34) [5]

Из SQL Server"а конечно легко, но если Access"ский файл лежит где-то в сети, то к нему не достучишься, если не сделать директорию доступной через сеть. В моем случае так делать не стоит. Но вот с помощью SQL я все-таки достучался до внешних СУБД! Вот пример работы с СУБД через ODBC:

SELECT * FROM [ODBC;DSN=MyODBCLink;UID=DB_USER;PWD=my_password;DATABASE=my_db_name;].DB_USER.TABLE_NAME


 
Nikolai_S ©   (2002-09-03 11:36) [6]

Забыл сказать, это я из SQL Server делаю выборку


 
sniknik ©   (2002-09-03 17:02) [7]

А вот если Access"ский файл лежит где-то в сети то похоже ты не можеш его открыть потому как нет прав на создание/редактирование файла. (он там *.ldb файл пытается создать, блокировка пользователей, не удается и он дает ошибку типа занят или эксклюзивно открыт). Да прав не у тебя, а у MSSQL - ля, попробуй в Anzliser подключится не через "sa" а через виндового юзера, и он должен быть прописан на той машине где Access файл лежит, и вот тогда пробуй, должно получится..... теоретически.... может быть. (дорвусь до сети попробую пока это я так теоретизирую :)

выборка через ODBC для Access алиаса тоже не проходит?


 
Nikolai_S ©   (2002-09-04 10:00) [8]

Так вот я даже пробовать не стал. Ведь нужно в SQL-Server указать полный путь к Access"кому файлу. А для этого нужно, чтобы у пользователя была зашарена (Shared) папка, где Access"кая база лежит, причем с разрешением на запись. Так что ты прав. Поэтому-то я пытался из Access"а достучаться до SQL-Server, а не наоборот. И это удачно у меня получилось (см. мое предыдущее сообщение). Я привел пример как я это сделал.


 
sniknik ©   (2002-09-04 10:39) [9]

Дествительно так лутше, меньше мороки, для полного счастья осталось добится подключения через строку, без ODBC алиаса.


 
Nikolai_S ©   (2002-09-04 10:54) [10]

Можно и без ODBC-алиаса, но не для всех СУБД, увы! MS SQL Server почему-то не входит в число таких СУБД. Если ты пользовался когда-нибудь мастером преобразования данных из Access в SQL Server, то наверное обращал внимание, что там тоже только через ODBC алиас можно данные передавать. А если тебе интересно, как для других СУБД (парадокс и т.д.) можно без ODBC работать, то скажи, я вышлю примеры.


 
sniknik ©   (2002-09-04 11:18) [11]

это можно узнать без проблем, запускаеш regedit и смотриш HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ISAM Formats
(ODBC там нет он в енжайнах, каждый исам подключен к какому нибудь енжайну а ты к нему напрямую подключился).


 
sniknik ©   (2002-09-04 17:34) [12]

А она всетаки вертится!!!!
(это я от полного счастья см. sniknik © (04.09.02 10:39))
SELECT * FROM [ODBC;DRIVER={SQL Server};SERVER=NIKS;UID=sa;PWD=;DATABASE=tempdb;].sysusers
работает без ODBC алиасов. не надо на каждой машине прописывать!


 
Nikolai_S ©   (2002-09-04 17:48) [13]

Слушай! Я такое описание доступа к SQL Server ведь видел, но не разобрался что к чему! Молодец, ты! Это просто круто! Я проверил и впрямь работает без ODBC-алиаса!!!


 
Nikolai_S ©   (2002-09-04 17:49) [14]

2 sniknik

Есть еще один отвлеченный вопрос: как составить рекурсивный запрос?

Имеется таблица TABLE с полями:
ID int
PARENT_ID int
NAME varchar

Записи в таблице представляют собой дерево (поле PARENT_ID ссылается на поле ID - т.е. на запись-предок).

Вопрос такой: можно ли составить SQL запрос таким образом, чтобы получить выборку, содержащую всех предков записи с заданным ID в порядке, начиная с самого верхнего по уровню предка?




Страницы: 1 вся ветка

Текущий архив: 2002.09.26;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.024 c
3-85363
maxim2
2002-09-05 06:15
2002.09.26
Надо узнать длину поля в таблице, незнаю как?


3-85352
Шурик Ш
2002-09-04 18:06
2002.09.26
Запрос Update


3-85343
Друмлин
2002-09-02 13:20
2002.09.26
как?


1-85572
Дима...
2002-09-14 07:54
2002.09.26
Проблема....


14-85699
EAlexander
2002-08-29 16:13
2002.09.26
Delphi 7 можно скачать с Borland.com