Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];

Вниз

Доступ из 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.007 c
1-85424
Cosmic
2002-09-15 18:55
2002.09.26
Утановка screen saver a


3-85383
Sewix
2002-08-18 02:41
2002.09.26
Помогите настроить Alias Manager для работы с Oracle


1-85607
Demiurg
2002-09-14 14:52
2002.09.26
Окошко, перекрывающее fsStayOnTop


4-85746
anod
2002-08-08 14:01
2002.09.26
Как


1-85534
Dark Hunter
2002-09-13 14:41
2002.09.26
Алло!!! Удалённое администрирование...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский