Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите как установить связь MDB с DBF / 4 сообщений из 4, страница 1 из 1
13.10.2003, 04:35:17
    #32290854
SashaCrane
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как установить связь MDB с DBF
В акцессе можно сделать линк на внешнюю таблицу dbf и потом работать со всей совокупностью данных
У меня имеется MDB и некий DBF. Есть необходимость прилинковать этот DBF что бы импортировать из него записи.
Можно конечно открыть отдельно DBF взять из него все данные в массив
затем открыть MDB и все вставить. Но если все же установить связь с таблицей то можно выполнить изящный SQL запрос и никаких итераций...

В среде Accsess делается все просыми тычками, а как это изобразить на VBA я загрузился. Пишу в Excel. Делаю так:
Код: plaintext
1.
2.
3.
4.
5.
        Set dbiDatabase = DAO.OpenDatabase(DBFilePath)
        Set TblDef = New DAO.TableDef
        TblDef.SourceTableName = FilePath
        'TblDef.Connect =  "ODBC" 
        dbiDatabase.TableDefs.Append (TblDef)

после этого вылетает ошибка "Операция не поддерживается для объектов этого типа"
Думаю дело в отсутсвии DSN. Делается он RegisterDatabase но как.
Приведите код пожалуйста или ссылку.
Может быть есть более ЛУЧШИЙ способ решения моей задачи.
...
Рейтинг: 0 / 0
13.10.2003, 06:03:43
    #32290858
SashaCrane
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как установить связь MDB с DBF
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub AttachDBFTable(DB As DAO.DataBase, TableName As String, TableFolder As String)
    Dim TblDef As DAO.TableDef
    Set TblDef = DB.CreateTableDef(TableName)
    TblDef.Connect =  "dBase IV;DATABASE="  & TableFolder
    TblDef.SourceTableName = TableName
    DB.TableDefs.Append TblDef
End Sub
Private Sub DeAttachDBFTable(DB As DAO.DataBase, TableName As String)
    DB.TableDefs.Delete TableName
End Sub

Код работает покачто нормально. Есть один недостаток такого аттача: после прицепления файла его нельзя просмотреть из Акцеса. Говорит что объект не может быть распознан Microsoft Jet'ом. Жаль. Может кто подскажет чего в коде нехватает
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
23.12.2004, 19:59:52
    #32842720
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как установить связь MDB с DBF
У меня работает так

Скорее всего можно и лучше придумать.


1. Убиваю коннекты:

Sub D()
On Error Resume Next
DoCmd.DeleteObject acTable, "kls_VO"
DoCmd.DeleteObject acTable, "All_k"
DoCmd.DeleteObject acTable, "All_l"
DoCmd.DeleteObject acTable, "All_z"
DoCmd.DeleteObject acTable, "kls_priv1"
DoCmd.DeleteObject acTable, "kls_podr1"
DoCmd.DeleteObject acTable, "kls_hab"
DoCmd.DeleteObject acTable, "PT"
DoCmd.DeleteObject acTable, "kls_home"
DoCmd.DeleteObject acTable, "kls_hab"
DoCmd.DeleteObject acTable, "kls_zak"

End Sub


Если не выполнить шаг № 1 , к названию таблицы каждый раз будет добавлена "1"

2. Создаю новые

Sub A()
filep = CurrentDb.Name
filep = Left(filep, Len(filep) - 14)

DoCmd.TransferDatabase acLink, "dBase IV", filep, acTable, "KLS_VO.dbf", "KLS_VO"
DoCmd.TransferDatabase acLink, "dBase IV", filep, acTable, "All_k.dbf", "All_k"
DoCmd.TransferDatabase acLink, "dBase IV", filep, acTable, "All_l.dbf", "All_l"
DoCmd.TransferDatabase acLink, "dBase IV", filep, acTable, "All_z.dbf", "All_z"
DoCmd.TransferDatabase acLink, "dBase IV", filep, acTable, "KLS_priv.dbf", "KLS_priv"
DoCmd.TransferDatabase acLink, "dBase IV", filep, acTable, "KLS_podr.dbf", "KLS_podr"
DoCmd.TransferDatabase acLink, "dBase IV", filep, acTable, "KLS_HAB.dbf", "KLS_HAB"
DoCmd.TransferDatabase acLink, "dBase IV", filep, acTable, "PT.dbf", "PT"
DoCmd.TransferDatabase acLink, "dBase IV", filep, acTable, "kls_home.dbf", "kls_home"

DoCmd.TransferDatabase acLink, "dBase IV", filep, acTable, "kls_zak.dbf", "kls_zak"

End Sub
...
Рейтинг: 0 / 0
23.12.2004, 20:02:35
    #32842724
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как установить связь MDB с DBF
Да забыл

filep = Left(filep, Len(filep) - 14)

14- это длина имени моего *.mdb файла с mdb и точкой
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите как установить связь MDB с DBF / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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