|
|
|
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
|
|||
|---|---|---|---|
|
#18+
Есть ли в 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2003, 11:22 |
|
||
|
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
|
|||
|---|---|---|---|
|
#18+
Люди! Ау!!! Что на форуме по Access никто к этому самому Access не привязывает внешние таблицы ( кроме базы Access на компьютере нет других источников данных что-ли ). Или все пользуются только столетней DAO ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2003, 09:27 |
|
||
|
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
|
|||
|---|---|---|---|
|
#18+
Мог бы и сам найти. Тут очень просто. Подключи 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")="Путь к новой базе" Все просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2003, 10:04 |
|
||
|
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ! НО! все-таки , наверно не так все просто ( как и обычно ...), Как же все-таки привязать ( новую таблицу ), используя эти технологии. Посмотреть с помощью c.tables(i).Properties(j) любое j свойство любой i таблицы можно , можно и понять по ним - какая привязанная . Но изменить можно долеко не любое требуемое свойство для его переназначения на другую внешнюю таблицу. Да и даже , если можно , то эта внешняя таблица уже должна существовать! А как быть если база Access новая и в ней нет никаких привязанных внешних таблиц - как их создать-то новые ? Например техника : Dim tbl As New Table tbl.Name="MyTable" c.Tables Append tbl позволяет только создать родную Access'кую таблицу . Во всяком случае , может быть , достаточно лениво обращаюсь в течении последних полутора лет на конференции, ответ на этот вопрос не могу найти. Приходится пользоваться DAO. Но все-бы ничего , да он не хочет с Delphi сосуществовать !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2003, 15:53 |
|
||
|
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2003, 16:26 |
|
||
|
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
|
|||
|---|---|---|---|
|
#18+
Все работает, надо так (проверенно) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. А по поводу >Да и даже , если можно , то эта внешняя таблица уже должна существовать! А как же иначе. К чему ты линки городишь? Таблица _обязана_ быть. По другому никак (ну, во всяком случае я способа не знаю). Да и зачем такое - подсоединить таблицу к несуществующиму месту? Объясни. Может я тебе другой способ подскажу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2003, 16:28 |
|
||
|
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
|
|||
|---|---|---|---|
|
#18+
Ну надо же я у Микрософтовцев как у меня. Наверное у меня и подглядели Хотя, пардон, у них есть Код: plaintext 1. Для Акеса этот свойство д.б. пусто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2003, 16:34 |
|
||
|
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
|
|||
|---|---|---|---|
|
#18+
Спасибо! Извините за неточную формулировку ("А как быть если база 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 Это работает). Да ,кстати, таблица должна иметь индексы и более сложные, чем сосоящие из одного поля! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2003, 00:35 |
|
||
|
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
|
|||
|---|---|---|---|
|
#18+
Добавь сюда: 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;" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2003, 09:00 |
|
||
|
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
|
|||
|---|---|---|---|
|
#18+
Во! Спасибо ( я уже как диктатор всех туркмен при встрече с Путиным, повторяю это слово ) , но буду благодарен и далее , если найдется кто-нибудь, кто даст мне понять - где бы найти систематическое и одновременно ясное описание этих строк коннекта с провайдерами всех дикататоров , пардон , источниками данных... В MSDN (у меня окт2000) - как-то долго и не очень ясно. P.S. А слово "ODBC" в строке коннекта я прежде пробовал , но через DAO и оно все не получалось, поэтому здесь и пробовать не стал - поставил то, что показывает tbl.Properties("Jet OLEDB:Link Provider String") у уже подцепленной через меню Access внешней таблицы. Ну, теперь можно и Delphi поставить. Често говоря, Access мне и нужен - то был как удобное средство объединения различных гетерогенных источников данных через его возможность линков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2003, 10:46 |
|
||
|
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
|
|||
|---|---|---|---|
|
#18+
Еще одна неожиданность . оказывается такой совсем уже хороший способ через ODBC дает таблицу при попытке редактирования которой выходит запрет: "Объет Recordset не является обновляемым" Что можно сделать для возможности редактирования ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2003, 12:26 |
|
||
|
Есть ли в ADO способы привязки к базе Access внешних источн данных подобные DAO
|
|||
|---|---|---|---|
|
#18+
Ну и еще одна ! Если в привязываемой dbf (Foxpro2.6 dos) таблице отсутствует кодовый маркер (а это бывает довольно часто - сам foxpro2.6 это не чувствует), то в символьных полях идут крякозябры при прилинковке dbf по ODBC. Нельзя ли как-то разрешить и эту проблему? Collate=и Machine и Russian ставил - не помогает . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2003, 15:40 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32142277&tid=1678268]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
138ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 438ms |

| 0 / 0 |
