powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
13 сообщений из 13, страница 1 из 1
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32138311
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли в ADODB,ADOX, и т.п. способы привязки к базе Access внешних источников данных подобные DAO :

Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(".\Sklad\1.mdb")
StrCnn = "dBase IV;HDR=NO;IMEX=2;DATABASE=" + ".\Sklad"

Set tdf = db.CreateTableDef("d1")
tdf.Connect = StrCnn: tdf.SourceTableName = "1.dbf"
db.TableDefs.Append tdf
...
Рейтинг: 0 / 0
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32140505
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди! Ау!!!
Что на форуме по Access никто к этому самому Access не привязывает внешние таблицы ( кроме базы Access на компьютере нет других источников данных что-ли ).
Или все пользуются только столетней DAO ???
...
Рейтинг: 0 / 0
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32140559
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мог бы и сам найти. Тут очень просто.
Подключи ADOX и ADO

Следующая программа выдает список всех прилинкованных таблиц

Public Sub fd()
Dim c As New ADOX.Catalog
Set c.ActiveConnection = CurrentProject.Connection
Dim tb As ADOX.Table
Dim p As ADOX.Property
For Each tb In c.Tables
If tb.Type = "LINK" Then
Debug.Print tb.Name, tb.Type

For Each p In tb.Properties
Debug.Print " -" & p.Name, p.Value
Next p

End If
Next tb
Set c = Nothing
End Sub

Обнаруживаешь свойство "Jet OLEDB:Link Datasource" со строкой подключения.
Его то и меняешь: tb.Properties("Jet OLEDB:Link Datasource")="Путь к новой базе"
Все просто.
...
Рейтинг: 0 / 0
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32141226
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответ!
НО! все-таки , наверно не так все просто ( как и обычно ...),
Как же все-таки привязать ( новую таблицу ), используя эти технологии.
Посмотреть с помощью c.tables(i).Properties(j) любое j свойство любой i таблицы можно , можно и понять по ним - какая привязанная .
Но изменить можно долеко не любое требуемое свойство для его переназначения на другую внешнюю таблицу. Да и даже , если можно , то эта внешняя таблица уже должна существовать! А как быть если база Access новая и в ней нет никаких привязанных внешних таблиц - как их создать-то новые ?
Например техника :
Dim tbl As New Table
tbl.Name="MyTable"
c.Tables Append tbl
позволяет только создать родную Access'кую таблицу .
Во всяком случае , может быть , достаточно лениво обращаюсь в течении последних полутора лет на конференции, ответ на этот вопрос не могу найти.
Приходится пользоваться DAO. Но все-бы ничего , да он не хочет с Delphi сосуществовать !!!
...
Рейтинг: 0 / 0
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32141286
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32141291
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все работает, надо так (проверенно)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub ewr()
    Dim c                          As New ADOX.Catalog
    Dim t                          As New ADOX.Table
    Set c.ActiveConnection = CurrentProject.Connection
    t.Name =  "НоваяСвязаннаяТаблица" 
    Set t.ParentCatalog = c
    t.Properties( "Jet OLEDB:Remote Table Name" ) =  "ИмяУжеСуществующейТаблицы" 
    t.Properties( "Jet OLEDB:Link Datasource" ) =  "Путь к .mdb файлу в котором лежит таблица" 
    t.Properties( "Jet OLEDB:Exclusive Link" ) = False
    t.Properties( "Jet OLEDB:Create Link" ) = True

    c.Tables.Append t
    c.Tables.Refresh

    Set t = Nothing
    Set c = Nothing
End Sub

' не забудь обновить окно Акеса


А по поводу

>Да и даже , если можно , то эта внешняя таблица уже должна существовать!

А как же иначе. К чему ты линки городишь? Таблица _обязана_ быть. По другому никак (ну, во всяком случае я способа не знаю). Да и зачем такое - подсоединить таблицу к несуществующиму месту? Объясни. Может я тебе другой способ подскажу.
...
Рейтинг: 0 / 0
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32141299
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну надо же я у Микрософтовцев как у меня.
Наверное у меня и подглядели

Хотя, пардон, у них есть
Код: plaintext
1.
tbl.Properties( "Jet OLEDB:Link Provider String" ) = strLinkPro.

Для Акеса этот свойство д.б. пусто.
...
Рейтинг: 0 / 0
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32141614
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
Извините за неточную формулировку ("А как быть если база Access новая и в ней нет никаких привязанных внешних таблиц ...") - имелось ввиду еще нет линков и я считал, что Вы имеете ввиду , что они должны быть и предлагаете просто изменить их параметры. Но это тереь в прошлом.
А вот до идеи, что после создания объекта Table нужно его привязать к ParentCatalog:
Set t.ParentCatalog = c
Это для меня действительно явилось определяющим моментом.Этого - то я и не делал.
Теперь,вроде , умею.
Но вот беда - добивался я этой привязки без исполльзования DAO т.к. думал, что с BDE DELPHI эти привязанные dbf (foxpro2.6 DOS) таблицы смоут работать - напрасные надежы.
Дело видимо в строке коннекта с провайдером. Вот, что я получил :

dbName = "c:\myApp\RH_Reports\Try.mdb"
Path1 = "c:\myApp\RH_Reports\sklad"
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName
cnn.Open
Dim t As New ADOX.Table
Set c.ActiveConnection = cnn
t.Name = "Tabel"
Set t.ParentCatalog = c
t.Properties("Jet OLEDB:Remote Table Name") = "tabel#dbf" ' "tabel"
t.Properties("Jet OLEDB:Link Datasource") = Path1
t.Properties("Jet OLEDB:Exclusive Link") = False
t.Properties("Jet OLEDB:Create Link") = True

'1) Здесь при привязке Ошибка - Не могу найти устанавливаемый ISAM с Delphi и без Delphi :
t.Properties("Jet OLEDB:Link Provider String")= "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Path1 & ";Extended Properties=DBASE IV;"
' "DSN=Таблицы Visual FoxPro;SourceDB=c:\MyApp\Dvlp\RH_Reports\Sklad;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"

'2) Здесь Привязка успешная и с Delphi и без нее, но при попытке использования таблицы говорит : "Индекс не найден"
t.Properties("Jet OLEDB:Link Provider String") = "dBase IV" ' ;HDR=NO;IMEX=2;" -

c.Tables.Append t
c.Tables.Refresh

Но что я заметил, так это если вручную привязать через меню Access таблицу Tabel.dbf через ODBC даже при установленном Delphi, то она работает
при этом свойство этой привязанной таблиоцы будет :
t.Properties("Jet OLEDB:Link Provider String")= "DSN=Таблицы Visual FoxPro;SourceDB=c:\MyApp\Dvlp\RH_Reports\Sklad;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"

НО!!! Программой если я пытаюсь сделать привязку с таким свойством, говорит ошибка:
"Не могу найти устанавливаемый ISAM" с Delphi и без Delphi :(((

КАк же всетаки (с какой) строкой коннекта следует привязывать DBF (foxpro2.6) таблицу через ODBC (ведь из меню же Access Это работает). Да ,кстати, таблица должна иметь индексы
и более сложные, чем сосоящие из одного поля!
...
Рейтинг: 0 / 0
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32141712
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавь сюда:

t.Properties("Jet OLEDB:Link Provider String")= "DSN=Таблицы Visual FoxPro;SourceDB=c:\MyApp\Dvlp\RH_Reports\Sklad;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"

ODBC, вот так:

t.Properties("Jet OLEDB:Link Provider String")= "ODBC;DSN=Таблицы Visual FoxPro;SourceDB=c:\MyApp\Dvlp\RH_Reports\Sklad;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
...
Рейтинг: 0 / 0
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32141811
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во! Спасибо ( я уже как диктатор всех туркмен при встрече с Путиным, повторяю это слово ) , но буду благодарен и далее , если найдется кто-нибудь, кто даст мне понять - где бы найти систематическое и одновременно ясное описание этих строк коннекта с провайдерами всех дикататоров , пардон , источниками данных... В MSDN (у меня окт2000) - как-то долго и не очень ясно.

P.S.
А слово "ODBC" в строке коннекта я прежде пробовал , но через DAO и оно все не получалось, поэтому здесь и пробовать не стал - поставил то, что показывает tbl.Properties("Jet OLEDB:Link Provider String") у уже подцепленной через меню Access внешней таблицы.
Ну, теперь можно и Delphi поставить. Често говоря, Access мне и нужен - то был как удобное средство объединения различных гетерогенных источников данных через его возможность линков.
...
Рейтинг: 0 / 0
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32141982
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще одна неожиданность .
оказывается такой совсем уже хороший способ через ODBC дает таблицу при попытке редактирования которой выходит запрет:
"Объет Recordset не является обновляемым"
Что можно сделать для возможности редактирования ?
...
Рейтинг: 0 / 0
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32142277
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и еще одна !
Если в привязываемой dbf (Foxpro2.6 dos) таблице отсутствует кодовый маркер (а это бывает довольно часто - сам foxpro2.6 это не чувствует), то в символьных полях идут крякозябры при прилинковке dbf по ODBC. Нельзя ли как-то разрешить и эту проблему? Collate=и Machine и Russian ставил - не помогает .
...
Рейтинг: 0 / 0
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
    #32323574
Dimchik1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
C cp866...((((((((
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]