powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / связать таблицы в Аccess
25 сообщений из 30, страница 1 из 2
связать таблицы в Аccess
    #32384511
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите равнозначны ли следующие действия:
1) Файл-Внешние данные-Связь с таблицами
2) Использование команды DoCmd.TransferDatabase acLink ...
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32384583
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Да.
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32384687
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда почему при использовании первого метода скорость на много больше, чем во втором?
Программный код моей базы:

Private Sub btnDBOpen_Click()
On Error GoTo Err_btnDBOpen_Click

Dim dDbs As DAO.Database, tdf As TableDef, rst As DAO.Recordset
Dim stDocName As String, arTables As Variant, arLTables As Variant
Dim stLinkCriteria As String, Num As Integer

Set dDbs = CurrentDb

arTables = Array("AditionField", "BlanksMvmt", "BlanksTotal", "BlankTypes", "Coupons", "FinReports", "FinDocBlanks", "FinDocHeads", "FinDocRoutes", "FinDocTaxes", "Agents", "Agency", "Carriers", "Customers", "DocTypes", "Taxes", "PayForms", "Sys_Monthes", "Filials")
arLTables = Array("AditionField", "BlanksMvmt", "BlanksTotal", "BlankTypes", "Coupons", "AgencyReports", "FinDocBlanks", "FinDocHeads", "FinDocRoutes", "FinDocTaxes", "Agents", "Agency", "Carriers", "Customers", "DocTypes", "Taxes", "PayForms", "Sys_Monthes", "Filials")

For Num = LBound(arLTables) To UBound(arLTables)
For Each tdf In dDbs.TableDefs
If tdf.Name = arLTables(Num) Then
dDbs.TableDefs.Delete tdf.Name
End If
Next tdf
DoCmd.TransferDatabase acLink, "Microsoft Access", Me.listDBSelect & "\Dbdata.mdb", acTable, arTables(Num), arLTables(Num), False, True
Next Num

Set rst = dDbs.OpenRecordset("DBPaths")
With rst
.Index = "PrimaryKey"
.Seek "=", Me.listDBSelect.Column(0)
If .NoMatch Then
MsgBox "Îøèáêà!"
Else
.Edit
!LastDT = Now
.Update
End If
End With

Set rst = Nothing
Set dDbs = Nothing

DoCmd.Close acForm, Me.Name
stDocName = "frmMenu"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_btnDBOpen_Click:
Exit Sub

Err_btnDBOpen_Click:
MsgBox Err.Description
Resume Exit_btnDBOpen_Click

End Sub
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32384776
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему поднимаю этот вопрос.
У пользователя есть возможность при входе задать путь к базе на сервере. он на своей рабочей машине после регистрации выбирает в окне РАБОЧАЯ БАЗА и нажимает кнопочку ОТКРЫТЬ БАЗУ, а если захочет, то ИЗМЕНИТЬ и задать новый путь к базу, который запоминается в Me.listDBSelect и используется в DoCmd.TransferDatabase acLink.
При такой организации работа более одного пользователя жуткий тормаз. Кроме того при попытке поставить приложение еще одному пользователю на новую машину возникла ошибка: выбрал рабочую базу нажал открать базу, а в ответ "Ошибочный аргумент" ... что это?
Пришлось наплевать на гибкость и сделать по первому методу дабы обойти
ошибку. Оказалось что это быстрее, чем второй. Почему?
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32384874
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
На основной вопрос у меня нет ответа, но:

авторПри такой организации работа более одного пользователя жуткий тормаз.
Видимо, плохая сеть.

авторвыбрал рабочую базу нажал открать базу, а в ответ "Ошибочный аргумент" ... что это?
Интересно бы узнать, на какой строке это произошло. Иначе можно гадать до посинения.
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32384899
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что явно ссылки на ошибку в какой либо строке нет! просто появляется сообщение от MSAccess "Ошибочный аргумент", программа после окея не вылетает, хочешь хоть сто раз нажми на ОТКРЫТЬ БАЗУ.
Уважаемый Владимир Саныч! Хотите сказать, что все должно работать хорошо если бы не сеть?
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32384904
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советую научиться пользоваться режимом отладки программы. Иначе так и будете гадать - в какой же блин строчке ошибка то, а? Че делать, мужики?
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32384933
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
У меня есть система, работающая с 95 года - сначала на Аксессе 2, а потом 97. Аппликация в сети, 20 юзеров, при входе все таблицы перелинковываются. Все пашет, как в аптеке.

И с Лохом я согласен.
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32384947
Allll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что явно ссылки на ошибку в какой либо строке нет!
Попробуйте закоментировать строчку
' On Error GoTo

тогда наверное покажет в какой строке ошибка.
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32385073
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно с ошибкой я разберусь, спасибо за советы!
Просто хочется услышать мнения практиков о методе TransferDatabase.
Из-за нижепреведенной инфы думалось, что тормаза при работе из-за него:
В коде VB Microsoft этого не рекомендует: "Хотя в программах Visual Basic допускается использование метода TransferDatabase для связывания таблиц, рекомендуется вместо этого использовать объекты доступа к данным (DAO). Для создания связи с помощью DAO следует воспользоваться свойством Connect объекта TableDef."
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32385154
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстате об ошибке
Стопориться на строке
DoCmd.TransferDatabase acLink, "Microsoft Access", Me.listDBSelect & "\Dbdata.mdb", acTable,
Пишет Ошибочный аргумент, и один раз (не знаю как объяснить) вышло сообщение, что не найдена \Dbdata.mdb
она вообще на сетевом диске и на соседней машине с ней работають
путь прописан правильно
даже если его вручную прописать результат - ошибочный аргумент
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32390640
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На одной из машин (раньше там база работала нормально) переустановил ОС (все настройки старые восстановил-рабочую группу, IP-адреса, учетную запись...), установил офис, подключил файл рабочих групп, скопировал .mdb, запустил: на строке DoCmd.TransferDatabase acLink, "Microsoft Access", Me.listDBSelect & "\Dbdata.mdb", acTable, пишет Ошибочный аргумент.
Может быть кто-то сталкивался с подобным или есть предположения, буду благодарен за помощь.
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32390895
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что дает в отладчике
Код: plaintext
Me.listDBSelect &  "\Dbdata.mdb" 
?
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32391049
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Честно, отладчиком в Access никогда не пользовался, только в фоксе, поэтому использовал примитивный MsBox.
сейчас зашел в MVB, открыл код приведенный выше, определил переменные значеня которых надо контролировать (кажется watches), установил точку до которой необходимо выполнять программу и нажал ран ту курсор и ... ничего...
нажатие на синий треугольник откравает окно, где предлогается выбрать из ничего макрос или создать новый.
что я делаю не так?
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32391077
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставь точку останова на строчке, где используется это выражение. После остановки программы нажми Ctrl + G и введи:
?Me.listDBSelect & "\Dbdata.mdb"
Нажми Энтер. Результат плиз в студию.
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32391086
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А. да... Надо при запуске, чтоюы курсор находился в тексте запускаемой процедуры.
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32391106
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AlexJuice
Надо при запуске, чтоюы курсор находился в тексте запускаемой процедуры

С какого бодуна?:)
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32391144
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rezult:
?Me.listDBSelect & "\Dbdata.mdb"
G:\New\Archive\2003\Dbdata.mdb
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32391176
DinN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?Me.listDBSelect & "\Dbdata.mdb"
G:\New\Archive\2003\Dbdata.mdb
?acTable
0
?arTables(Num)
AditionField
?arLTables(Num)
AditionField
Все параметры, пробовал то же в рабочей базе на другом компе - отличий нет
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32391267
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Hummer
А хрен его знает, с этим к тов. Гейтсу

2 DinN
Блин... А имя таблицы-то для импорта где?
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32391289
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AlexJuice
:)
Фигня - форма, на форме кнопка, под кнопкой вызов процедуры. В процедуре ставим брейкпойнт, ходим дальше по любым модулям, лезем куда угодно. Открываем форму и жмём на кнопку. Что, брейкпойнт не сработает?:)
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32391294
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, про имена таблиц понял. Тогда не знаю :-(
Только что попробовал, взяв в качестве источника базу в чужой папке, подключенной как диск.
Все работает, даже если в той базе таблицу открыть в конструкторе.
То ли проблема в системе... а таблица такая точно есть? Кстати, можно обойтись одним массивом, если имена таблиц одинаковые!
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32391305
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Hummer
Мое замечание относилось к запуску процедуры "синим треугольничком" в редакторе VB.
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32391316
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AlexJuice
Тогда вообще можно ничего не ставить, там есть Step Into, не помню как в ранних версиях, в XP точно есть...
...
Рейтинг: 0 / 0
связать таблицы в Аccess
    #32391327
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа, до ХРюши - уже ранние версии?
Просто я ответил на один вопрос, а уже потом вспомнил, что чел хотел запустить из редактора, и написал еще.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / связать таблицы в Аccess
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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