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

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

Доступ из MS Access к данным из других СУБД с пом. SQL [D6, MS Access]


Nikolai_S ©   (2002-09-02 17:24:00) 

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

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


Nikolai_S   (2002-09-04 17:49:00) [1]

2 sniknik

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

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

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

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


Nikolai_S   (2002-09-04 17:48:00) [2]

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


sniknik   (2002-09-04 17:34:00) [3]

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


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

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


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

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


sniknik   (2002-09-04 10:39:00) [6]

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


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

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


sniknik   (2002-09-03 17:02:00) [8]

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

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


Nikolai_S   (2002-09-03 11:36:00) [9]

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


Nikolai_S   (2002-09-03 11:34:00) [10]

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

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


sniknik   (2002-09-02 18:36:00) [11]

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


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

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


Nikolai_S   (2002-09-02 18:17:00) [13]

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


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

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


Наверх

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