SQL запрос к таблицам разных баз данных Accsess

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Andr222
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 31.05.2010 (Пн) 10:17
Откуда: Краснодар

SQL запрос к таблицам разных баз данных Accsess

Сообщение Andr222 » 02.06.2011 (Чт) 15:06

Имеются две базы данных Accsess. Необходимо выполнить запрос из Visual Basic 6 посредством ADO, который бы скопировал данные таблицы одной базы, в таблицу другой базы.
Делаю так:

strDirBaseRP-путь к базе данных Accsess(база1), которая под паролем и из которой надо перенести данные;
'открываю соединение с базой в, которую надо переместить данные (база2)
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPrilogenieDir & "/Data.mdb" & ";Mode=ReadWrite|Share Deny None;Persist Security Info=False
AppData.Open ConnectionString
'строка запроса копирования
'POTRRP (KODRASH)-таблица с полем в базе2, в которую копирую данные
'KODRASH From POTR-таблица в базе1, из которой копирую данные
strSQL = "INSERT INTO POTRRP (KODRASH) SELECT KODRASH From POTR IN '" & strDirBaseRP & "' "
AppData.Execute strSQL, , adCmdText

Возникает ошибка -2147467259 "Ошибочный пароль"
Всю имеющуюся литературу перерыл, нигде не нашел как выполнить аналогичный запрос посредством ADO, к базе данных под паролем.
Кто знает? Покажите пример!

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: SQL запрос к таблицам разных баз данных Accsess

Сообщение iGrok » 02.06.2011 (Чт) 17:32

label:
cli
jmp label

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Re: SQL запрос к таблицам разных баз данных Accsess

Сообщение VVitafresh » 02.06.2011 (Чт) 18:00

Мне в свое время посоветовали прилинковать (приаттачить) нужную таблицу, которая находится в другой базе, к текущей базе и работать с ней, как с родной. Теперь и я это советую :)

Почитай ту тему, я там привел ф-ию прилинковки через DAO:
viewtopic.php?f=5&t=16212&p=126449#p126449

Потом переписал эту ф-ию под adox:
Код: Выделить всё
Public Function LinkJetTable(sDestPath As String, sDestPWD As String, sLinkTblAs As String, sSourcePath As String, sSourcePWD As String, sLinkTbl As String) As Boolean
Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table
On Error Resume Next
' Open the catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sDestPath & ";Jet OLEDB:Database Password=" & sDestPWD
If Err.Number <> 0 Then Exit Function
' Set the name and target catalog for the table
tbl.Name = sLinkTblAs
Set tbl.ParentCatalog = cat
' Set the properties to create the link
tbl.Properties("Jet OLEDB:Create Link") = True
tbl.Properties("Jet OLEDB:Link Datasource") = sSourcePath
tbl.Properties("Jet OLEDB:Link Provider String") = ";Pwd=" & sSourcePWD
tbl.Properties("Jet OLEDB:Remote Table Name") = sLinkTbl
' Append the table to the collection
cat.Tables.Append tbl
If Err.Number = 0 Then LinkJetTable = True
Set cat = Nothing
End Function
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

SQL запрос к таблицам разных баз данных Accsess

Сообщение igor_m » 22.06.2011 (Ср) 21:29

У меня похожий вопрос. Для баз Access.
Есть рабочие таблицы которые нужны для обработки баз данных. Я их каждый раз импортирую в очередную базу и работаю с ними. Можно ли сделать запрос чтобы не импортировать таблицы, а поместить их эталонную базу и к ним все время обращаться.

Например в моей базе, куда я импортировал таблицу "леваятабл":

select табл1.поле1, леваятабл.поле2
from табл1 inner join леваятабл on табл1.код=леваятабл.код
where (табл.поле1=0 and леваятабл.поле2=0)

Можно ли этот запрос переделать, если "леваятабл" находится в "С:\ДругаяБаза.mdb" ?
Я читал, что Access позволяет делать такие вещи запросами SQL по простому, если таблицы находятся в *.mdb.

------
В верхних сообщениях увидет такое обсуждение. Вероятно, что-то я в синтаксисе напутал, поэтому не получилось когда пытался делать это.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Re: SQL запрос к таблицам разных баз данных Accsess

Сообщение VVitafresh » 22.06.2011 (Ср) 22:05

В общем-то ответ на вопрос тот же самый -- сделать один раз связь в "эталонной" (как ты ее назвал) базе с нужными таблицами (прилинковать талицы) и в дальнейшем обращаться к ним (делать SELECT'ы и прочее) как к обычным.

Не обязательно делать это программно через ADOX, как показано в предыдущем сообщении, можно сделать вручную в Access'e. В "эталонной" базе заходим в Таблицы, правой кнопкой на пустом месте, выбираем "Связь с таблицами..." дальше указываем требуемую базу и таблицу. Вот собственно и все. Теперь все изменения в исходной таблице автоматически отображаются в "эталонной" базе, т.к. мы сделали не копию таблицы, а ссылку на исходную.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

    TopList