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

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

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

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

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

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

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

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


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