Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: "Невозможно найти устанавливаемый ISAM"
 
 автор: ser60   (27.01.2011 в 08:13)   личное сообщение
 
 

Нашел у микрософта работающий пример связывания таблиц dBase4 для Акцесса через oledb.
Function LinkdBaseFile(strPath As String, _
strLinkPro As String, strRemTab As String)

Dim conn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table

' Open the catalog using the current Access database.
cat.ActiveConnection = CurrentProject.Connection

' Create the new table.
tbl.Name = "LinkedBae"
Set tbl.ParentCatalog = cat

' Set the properties to create the link.
tbl.Properties("Jet OLEDB:Create Link") = True
tbl.Properties("Jet OLEDB:Link Datasource") = strPath
tbl.Properties("Jet OLEDB:Link Provider String") = strLinkPro
tbl.Properties("Jet OLEDB:Remote Table Name") = strRemTab


' Append the table to the tables collection of the catalog.
cat.Tables.Append tbl

' Clean up.
Set cat = Nothing

End Function
Однако при попытке прилинковаться к таблам VFP 9.0 через окно “Immediate”: ?LinkdBaseFile("c:\MyDbaseFiles\","Microsoft OLE DB Provider for Visual FoxPro","UVN")
выдает сообщение:

В чем ошибка? У меня стоит акс2007

  Ответить  
 
 автор: Силblч   (27.01.2011 в 08:53)   личное сообщение
 
 

ну так драйвер нужен для Microsoft OLE DB Provider for Visual FoxPro, он же русским по белому говорит

а может еще что

  Ответить  
 
 автор: ser60   (29.01.2011 в 02:51)   личное сообщение
 
 

ну так при вызове функции из Immediate указывается необходимый драйвер, который я загрузил ранее

  Ответить  
 
 автор: Анатолий (Киев)   (27.01.2011 в 11:19)   личное сообщение
 
 

С файлами VFP 9.0 из Акса можно работать исключительно с помощью указанного провайдера и только через ADO. Вы можете либо получить данные через Recordset, либо преобразовать в более раннюю версию и работать с ним стандартными средствами.
Подробнее здесь: http://am.rusimport.ru/msaccess/topic.aspx?id=657

  Ответить  
 
 автор: ser60   (29.01.2011 в 03:02)   личное сообщение
 
 

Эту статью читал и пробовал. Отличная, ваша вроде бы. используя ранее указанную функцию, я использовал strLinkPro="Microsoft OLE DB Provider for Visual FoxPro", но не получилось. как проверить, может этот скачанный драйвер не запустился? Буду еще пробовать
PS. VFP у меня нет, файлы не мои, преобразовать их в более раннюю версию не могу, как получить доступ, чтобы сделать рекордсет. Мне нужен доступ к VFP 9.0 файлам, чтобы сделать некоторую аналитику. Заранее спасибо!

  Ответить  
 
 автор: Анатолий (Киев)   (07.02.2011 в 15:54)   личное сообщение
 
 

Так что именно не получается? Если тот код, что вы привели, то, ИМХО, и не получится. Акс не умеет использовать внешние провайдеры в строке подключения связанных таблиц и сохраненных запросов. Вы можете открыть соединение на основе провайдера, а в нем - Recordset на вашем файле (пример есть в указанной статье). Сам провайдер умеет преобразовывать файлы к более ранней версии (например в FoxBase, который затем можно подключить как dBase III). В статье есть и этот пример.
Добавлю, что если в файле нет специфических полей, появившихся в VFP8 и VFP9, и если он не является частью базы данных DBC, то его можно присоединить с помощью VFP ДРАЙВЕРА (не провайдера).

  Ответить  
 
 автор: ser60   (09.02.2011 в 21:56)   личное сообщение
 
 

Здравствуйте, Анатолий! Еще раз перечитал статью «Работаем с DBF файлами». Понял, что т.к. я пытаюсь работать с VFP файлами, то ISAM здесь не причем. Нужно пытаться отрабатывать соединение с помощью драйвера или провайдера.
Вопрос по провайдеру. А тот код, что я привел, не означает, что Акс использует внешние провайдеры в строке подключения связанных таблиц? Ведь этот код работает для dBase4.

Хочу попросить Вас просмотреть и откорректировать следующий код. Опыта мало еще, чувствую, что задаю элементарные и сырые вопросы. Например, что рекордсет нужно записывать в таблицу, но ведь мне нужна только линкованная таблица… Просто слепил показанные два фрагмента… ((

Function LinkVFPKiev()
Dim cnn As Object 'ADODB.Connection
Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table

Set cnn = CreateObject("ADODB.Connection")
cnn.Provider = "Microsoft OLE DB Provider for Visual FoxPro" 'èëè "vfpoledb", èëè "vfpoledb.1"
cnn.Properties("Data Source") = "c:\MyDbaseFiles\" 'Рабочая папка
cnn.Open

' Open the catalog using the current Access database.
cat.ActiveConnection = CurrentProject.Connection


Set rs = CreateObject("ADODB.Recordset")
rs.CursorLocation = 3 'adUseClient
rs.Open "MyFile", cnn, 1, 3, 2 'adOpenKeyset, adLockOptimistic, adCmdTable

End Function

  Ответить  
 
 автор: Анатолий (Киев)   (10.02.2011 в 12:03)   личное сообщение
 
 


Вопрос по провайдеру. А тот код, что я привел, не означает, что Акс использует внешние провайдеры в строке подключения связанных таблиц? Ведь этот код работает для dBase4.

Интересно, а что вы указываете в св-ве "Jet OLEDB:Link Provider String" в случае с dBase?
И что вы видите в свойствах созданной таблицы?

Я вижу это:

ADOX
Jet OLEDB:Link Datasource                 C:\Temp
Jet OLEDB:Link Provider String            dBase IV;HDR=NO;IMEX=2;
Jet OLEDB:Remote Table Name         261_20A#DBF

DAO
Connect                                                     dBase IV;HDR=NO;IMEX=2;DATABASE=C:\Temp
SourceTableName                                  261_20A.DBF

Вот это "dBase IV;" сообщает JET-у, к БД какого типа он будет обращаться.
У меня А2003, возможно А2007/2010 умеют что-то большее, но об использовании провайдеров я не слішал.

  Ответить  
 
 автор: ser60   (10.02.2011 в 21:46)   личное сообщение
26 Кб.
 
 

в случае с dbase IV для установки линка я писал в аргументе функции, конечно, "Dbase IV": ?LinkdBaseFile("c:\MyDbaseFiles\","Dbase IV","ANAEST")

А свойство "Jet OLEDB:Link Provider String" как смотреть? Если я пробую получить свойства созданной таблицы (по нажатию правой кнопки мыши и выборе «Свойства таблицы») я вижу стандартный рисунок


Если в окне Locals посмотреть свойство ConnectionString: "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Протоколы2011\ ОсваиваемСерверТехнологии\связьVFP.accdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database=C:\Users\Ñåðãåé\AppData\Roaming\Microsoft\Access\System."
А если запускаю ?LinkdBaseFile("c:\MyDbaseFiles\","Microsoft OLE DB Provider for Visual FoxPro","UVN")
где UVN.dbf от VFP 9.0, то получаю уже известный «Невозможно найти устанавливаемый ISAM»

  Ответить  
 
 автор: ser60   (01.02.2011 в 01:58)   личное сообщение
 
 

еще раз пробовал, не проходит. Подскажите, кто видит ошибку...

  Ответить  
 
 автор: ser60   (06.02.2011 в 19:42)   личное сообщение
 
 

Мужики, ну помогите советом!

  Ответить  
 
 автор: Explorer   (06.02.2011 в 22:04)   личное сообщение
 
 

может быть ошибка не в коде а в конфигурации драйверов ИСАМ...
тонкое это дело - вспоминаю с содроганием

  Ответить  
 
 автор: ser60   (08.02.2011 в 04:13)   личное сообщение
 
 

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

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList