powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Inner join = Access(mdb) + Dbase IV(dbf)
24 сообщений из 24, страница 1 из 1
Inner join = Access(mdb) + Dbase IV(dbf)
    #33452431
Алексей К.2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть табличка 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
Inner join = Access(mdb) + Dbase IV(dbf)
    #33452694
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Inner join = Access(mdb) + Dbase IV(dbf)
    #33452719
Код: 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
Inner join = Access(mdb) + Dbase IV(dbf)
    #33453444
Алексей К.2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Пользователь2
Спасибо - работает как надо:)
Вопрос в догонку: как убрать эту связь с dbf файлом?
...
Рейтинг: 0 / 0
Inner join = Access(mdb) + Dbase IV(dbf)
    #33453449
Всмысле убрать? Удалить таблицу?
...
Рейтинг: 0 / 0
Inner join = Access(mdb) + Dbase IV(dbf)
    #33453647
Алексей К.2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да таблицу, разобрался вроде так работает:
...
Рейтинг: 0 / 0
Inner join = Access(mdb) + Dbase IV(dbf)
    #33453649
Алексей К.2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cat.Tables.Delete table_name
...
Рейтинг: 0 / 0
Inner join = Access(mdb) + Dbase IV(dbf)
    #33453813
Именно так.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Inner join = Access(mdb) + Dbase IV(dbf)
    #36859550
АлексВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прилинковал таблицу main.dbf способом описанным Пользователем2 к базе Access. При попытке открыть таблицу в Access двойным щелчком мыши выдается сообщение: индекс не найден. Приложение MS Access не может открыть таблицу в режиме таблицы.

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

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

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

Для начала суть проблемы: есть файлы 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
Inner join = Access(mdb) + Dbase IV(dbf)
    #36861980
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: АлексВ
> Вопрос может это не dBase файл и нужен какой-то особый драйвер? Кто-нибудь знает как мне извлечь данные из файла
> (т.к. файл большой будет требоваться фильтрация)?

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

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Inner join = Access(mdb) + Dbase IV(dbf)
    #36862170
АлексВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скачал драйвер, установил, подключил в разделе reference. А как его использовать в программе?
...
Рейтинг: 0 / 0
Inner join = Access(mdb) + Dbase IV(dbf)
    #36862248
АлексВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так не работает:
Код: 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
Inner join = Access(mdb) + Dbase IV(dbf)
    #36862413
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: АлексВ
> Скачал драйвер, установил, подключил в разделе reference. А как его использовать в программе?

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

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

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

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

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

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

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


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