Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Inner join = Access(mdb) + Dbase IV(dbf) / 24 сообщений из 24, страница 1 из 1
22.12.2005, 15:37
    #33452431
Алексей К.2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
Есть табличка t1 в access базе. есть табличка t2 в dbf файле.
Вопрос: подскажите код линковки (обязательно программым способом) dbf-ной таблички к ацесовской. Что бы потом можно было через ADO получить рекордсет с результатом выполнения следующего запроса:

Код: plaintext
select t1.id, t1.name, (t2.x + t2.y) from t1 inner join on t1.id=t2.id
Клиент полностью на VB.

Код: plaintext
...
Рейтинг: 0 / 0
22.12.2005, 17:04
    #33452694
Andrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
Код: plaintext
1.
2.
Dim appAccess As New Access.Application
appAccess.OpenCurrentDatabase "C:\db2.mdb"
appAccess.DoCmd.TransferDatabase acLink, "dBase 5.0", "C:\", acTable, "KLDOH1", "T"
...
Рейтинг: 0 / 0
22.12.2005, 17:14
    #33452719
Inner join = Access(mdb) + Dbase IV(dbf)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    Dim cnn As ADODB.Connection
    Dim cat As ADOX.Catalog
    Dim tbl As ADOX.Table
    
    Set cnn = New ADODB.Connection
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
      & "Data Source=D:\My Databases\dbTest.mdb;Persist Security Info=False"
    
    Set cat = New ADOX.Catalog
    cat.ActiveConnection = cnn
    
    Set tbl = New ADOX.Table
    tbl.Name = "Test"
    
    Set tbl.ParentCatalog = cat
    tbl.Properties("Jet OLEDB:Create Link") = True
    tbl.Properties("Jet OLEDB:Link Datasource") = "D:\1\"
    tbl.Properties("Jet OLEDB:Link Provider String") = "Dbase IV"
    tbl.Properties("Jet OLEDB:Remote Table Name") = "Test"
    
    cat.Tables.Append tbl
    
    Set cat = Nothing
...
Рейтинг: 0 / 0
23.12.2005, 08:08
    #33453444
Алексей К.2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
to Пользователь2
Спасибо - работает как надо:)
Вопрос в догонку: как убрать эту связь с dbf файлом?
...
Рейтинг: 0 / 0
23.12.2005, 08:18
    #33453449
Inner join = Access(mdb) + Dbase IV(dbf)
Всмысле убрать? Удалить таблицу?
...
Рейтинг: 0 / 0
23.12.2005, 10:15
    #33453647
Алексей К.2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
да таблицу, разобрался вроде так работает:
...
Рейтинг: 0 / 0
23.12.2005, 10:16
    #33453649
Алексей К.2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
cat.Tables.Delete table_name
...
Рейтинг: 0 / 0
23.12.2005, 10:59
    #33453813
Inner join = Access(mdb) + Dbase IV(dbf)
Именно так.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
22.09.2010, 11:27
    #36859550
АлексВ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
Прилинковал таблицу main.dbf способом описанным Пользователем2 к базе Access. При попытке открыть таблицу в Access двойным щелчком мыши выдается сообщение: индекс не найден. Приложение MS Access не может открыть таблицу в режиме таблицы.

В каталоге с файлом БД main.dbf дополнительно находится файл main.cdx. Я так понимаю это индексный файл FoxPro и он должен использоваться для линкования к аксесовской БД.

Кто-нибудь знает как разрешить данную проблему?
...
Рейтинг: 0 / 0
22.09.2010, 11:36
    #36859583
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
Фокспрошный dbf отстоен. Создай для него DSN, который будет работать, и линкуй его.
...
Рейтинг: 0 / 0
22.09.2010, 11:48
    #36859616
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
АлексВ,

возможно, найдете решение здесь http://support.microsoft.com/default.aspx?scid=kb;EN-US;248841
...
Рейтинг: 0 / 0
22.09.2010, 13:19
    #36859877
АлексВ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
Спасибо всем кто отвечал. Вопрос решился (эксперимент провел на 2 различных ОС). Скачал драйвер для FoxPro, установил, подключил ссылку в разделе Reference редактора кода VBA. Установил значение свойства "Jet OLEDB:Link Provider String" на "Dbase 5.0" и перенес программу на компьютер с системой Windows XP - все заработало, на Vista работать все равно не хочет.
...
Рейтинг: 0 / 0
22.09.2010, 16:30
    #36860544
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
АлексВ... все заработало, на Vista работать все равно не хочет.
Так вам же сказали - делайте выборку не через Jet (ADO), а обращаясь к созданному заранее DSN.
Лениво мне разбирать - посмотрите сами вложение...
...
Рейтинг: 0 / 0
22.09.2010, 19:04
    #36861015
АлексВ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
AndreTM, спасибо. Я посмотрю, надо будет разобраться как с этим DSN работать.
...
Рейтинг: 0 / 0
23.09.2010, 11:39
    #36861900
АлексВ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
Пробовал советы mds_world и AndreTM , большинство файлов подключаются, но один не хочет)
Файл называется plan_sch, в отличии от подключаемых файлов с расширениями *.dbf , *.cdx у этого дополнительно существует модификация с *.fpt .


Dim con As New ADODB.Connection
Debug.Print "Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=" & selectedPath
con.Open "Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=" & selectedPath
For i = LBound(linkedTables) To UBound(linkedTables)
Debug.Print "SELECT * INTO " & linkedTables(i) & "_new IN '" & CurrentProject.Path & "\Buffer.mdb' FROM " & linkedTables(i)
con.Execute "SELECT * INTO " & linkedTables(i) & "_new IN '" & CurrentProject.Path & "\Buffer.mdb' FROM " & linkedTables(i)
Next i
con.Close
...
Рейтинг: 0 / 0
23.09.2010, 11:57
    #36861960
АлексВ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
Случайно нажал "Опубликовать", вместо предварительного просмотра.
Сейчас напишу код, который должен работать, но не работатет.

Для начала суть проблемы: есть файлы dbf из них нужно подкачать информацию в базу данных mdb. Для этого я создал client.mdb, buffer.mdb
Код запускается из client.mdb, соответсвенно в buffer.mdb хранятся исключительно таблицы.
Файл plan_sch находится в директории D:\ПутьКИсходнойБазеДанных\XBase


Код: plaintext
1.
2.
3.
4.
 1 . Dim con As New ADODB.Connection
 2 . con.Open "Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=D:\ПутьКИсходнойБазеДанных\XBase"
 3 . con.Execute "SELECT * INTO plan_sch_new IN 'D:\ПутьКМоейБД\Buffer.mdb' FROM plan_sch"
 4 . con.close

Проблема в том что данный код для plan_sch (.dbf, cdx, fpt) не работает и выдает ошибку на 3й строке : "[Microsoft][Драйвер ODBC dBase] Непредвиденная ошибка драйвера базы данных (8963). "

Повторюсь: этот же фрагмент кода прекрасно работает с другими таблицами из того же каталога, представленными расширениями (dbf, cdx).

Вопрос может это не dBase файл и нужен какой-то особый драйвер? Кто-нибудь знает как мне извлечь данные из файла (т.к. файл большой будет требоваться фильтрация)?
...
Рейтинг: 0 / 0
23.09.2010, 12:03
    #36861980
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
> Автор: АлексВ
> Вопрос может это не dBase файл и нужен какой-то особый драйвер? Кто-нибудь знает как мне извлечь данные из файла
> (т.к. файл большой будет требоваться фильтрация)?

Правильно :) нужно было сразу качать
этот драйвер
и пользоватся им, а не выдумывать себе приключения на одно место. *.fpt - это файл содержащий мемо или блоб поля
таблицы.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
23.09.2010, 13:15
    #36862170
АлексВ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
Скачал драйвер, установил, подключил в разделе reference. А как его использовать в программе?
...
Рейтинг: 0 / 0
23.09.2010, 13:34
    #36862248
АлексВ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
Так не работает:
Код: plaintext
1.
2.
 1 . dim con as new ADODB.Connection
 2 . con.open "Driver=Microsoft Visual Foxpro Driver;SourceType=DBF;SourceDB=C:\Program Files\Microsoft Visual FoxPro OLE DB Provider\Samples\Northwind"
Выдает ошибку на 2й строке
...
Рейтинг: 0 / 0
23.09.2010, 14:10
    #36862413
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
> Автор: АлексВ
> Скачал драйвер, установил, подключил в разделе reference. А как его использовать в программе?

как обычный АДО провайдер

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
23.09.2010, 15:08
    #36862602
АлексВ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
Игорь Горбонос, разобрался :)
Так же понял что
Код: plaintext
con.Execute "SELECT * INTO plan_sch_new IN 'D:\ПутьКМоейБД\Buffer.mdb' FROM plan_sch"
выполнить не получится, т.к. этот запрос не может быть обработан движком фокса (не поддерживается такой синтаксис, в отличие от Jet) и следовательно, скорее всего, придется получать необходимый recordset, используя полученный connection, и далее по записи сохранять в таблицу назначение. Может есть какой-нибудь другой путь как извлечь записи из DB FoxPro в MS Access?
...
Рейтинг: 0 / 0
23.09.2010, 15:14
    #36862619
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
> Автор: АлексВ
> Может есть какой-нибудь другой путь как извлечь записи из DB FoxPro в MS Access?

Ну это не ко мне :) это поробуй спросить в ветке по Акцесу, хотя мне кажется должен быть какой-то базовый функционал
импорта в базу и таких внешних форматов.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
23.09.2010, 15:55
    #36862731
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
АлексВ,

скачайте http://computerplus.com.ua/documents/Work_DBF_file.doc.
Там есть ответы по вашей задаче
...
Рейтинг: 0 / 0
23.09.2010, 17:41
    #36863053
АлексВ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Inner join = Access(mdb) + Dbase IV(dbf)
mds_worldАлексВ,

скачайте http://computerplus.com.ua/documents/Work_DBF_file.doc.
Там есть ответы по вашей задаче

Замечательная статья, спасибо!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Inner join = Access(mdb) + Dbase IV(dbf) / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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