|
|
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Подскажите равнозначны ли следующие действия: 1) Файл-Внешние данные-Связь с таблицами 2) Использование команды DoCmd.TransferDatabase acLink ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 12:56 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 13:28 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Тогда почему при использовании первого метода скорость на много больше, чем во втором? Программный код моей базы: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 14:17 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Почему поднимаю этот вопрос. У пользователя есть возможность при входе задать путь к базе на сервере. он на своей рабочей машине после регистрации выбирает в окне РАБОЧАЯ БАЗА и нажимает кнопочку ОТКРЫТЬ БАЗУ, а если захочет, то ИЗМЕНИТЬ и задать новый путь к базу, который запоминается в Me.listDBSelect и используется в DoCmd.TransferDatabase acLink. При такой организации работа более одного пользователя жуткий тормаз. Кроме того при попытке поставить приложение еще одному пользователю на новую машину возникла ошибка: выбрал рабочую базу нажал открать базу, а в ответ "Ошибочный аргумент" ... что это? Пришлось наплевать на гибкость и сделать по первому методу дабы обойти ошибку. Оказалось что это быстрее, чем второй. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 14:54 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
На основной вопрос у меня нет ответа, но: авторПри такой организации работа более одного пользователя жуткий тормаз. Видимо, плохая сеть. авторвыбрал рабочую базу нажал открать базу, а в ответ "Ошибочный аргумент" ... что это? Интересно бы узнать, на какой строке это произошло. Иначе можно гадать до посинения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 15:39 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Дело в том, что явно ссылки на ошибку в какой либо строке нет! просто появляется сообщение от MSAccess "Ошибочный аргумент", программа после окея не вылетает, хочешь хоть сто раз нажми на ОТКРЫТЬ БАЗУ. Уважаемый Владимир Саныч! Хотите сказать, что все должно работать хорошо если бы не сеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 15:51 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Советую научиться пользоваться режимом отладки программы. Иначе так и будете гадать - в какой же блин строчке ошибка то, а? Че делать, мужики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 15:55 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
У меня есть система, работающая с 95 года - сначала на Аксессе 2, а потом 97. Аппликация в сети, 20 юзеров, при входе все таблицы перелинковываются. Все пашет, как в аптеке. И с Лохом я согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 16:12 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Дело в том, что явно ссылки на ошибку в какой либо строке нет! Попробуйте закоментировать строчку ' On Error GoTo тогда наверное покажет в какой строке ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 16:18 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Ладно с ошибкой я разберусь, спасибо за советы! Просто хочется услышать мнения практиков о методе TransferDatabase. Из-за нижепреведенной инфы думалось, что тормаза при работе из-за него: В коде VB Microsoft этого не рекомендует: "Хотя в программах Visual Basic допускается использование метода TransferDatabase для связывания таблиц, рекомендуется вместо этого использовать объекты доступа к данным (DAO). Для создания связи с помощью DAO следует воспользоваться свойством Connect объекта TableDef." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 17:23 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Кстате об ошибке Стопориться на строке DoCmd.TransferDatabase acLink, "Microsoft Access", Me.listDBSelect & "\Dbdata.mdb", acTable, Пишет Ошибочный аргумент, и один раз (не знаю как объяснить) вышло сообщение, что не найдена \Dbdata.mdb она вообще на сетевом диске и на соседней машине с ней работають путь прописан правильно даже если его вручную прописать результат - ошибочный аргумент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 18:14 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
На одной из машин (раньше там база работала нормально) переустановил ОС (все настройки старые восстановил-рабочую группу, IP-адреса, учетную запись...), установил офис, подключил файл рабочих групп, скопировал .mdb, запустил: на строке DoCmd.TransferDatabase acLink, "Microsoft Access", Me.listDBSelect & "\Dbdata.mdb", acTable, пишет Ошибочный аргумент. Может быть кто-то сталкивался с подобным или есть предположения, буду благодарен за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 13:38 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
А что дает в отладчике Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 14:53 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Честно, отладчиком в Access никогда не пользовался, только в фоксе, поэтому использовал примитивный MsBox. сейчас зашел в MVB, открыл код приведенный выше, определил переменные значеня которых надо контролировать (кажется watches), установил точку до которой необходимо выполнять программу и нажал ран ту курсор и ... ничего... нажатие на синий треугольник откравает окно, где предлогается выбрать из ничего макрос или создать новый. что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 15:40 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Поставь точку останова на строчке, где используется это выражение. После остановки программы нажми Ctrl + G и введи: ?Me.listDBSelect & "\Dbdata.mdb" Нажми Энтер. Результат плиз в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 15:55 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
А. да... Надо при запуске, чтоюы курсор находился в тексте запускаемой процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 15:58 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
2 AlexJuice Надо при запуске, чтоюы курсор находился в тексте запускаемой процедуры С какого бодуна?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 16:05 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
rezult: ?Me.listDBSelect & "\Dbdata.mdb" G:\New\Archive\2003\Dbdata.mdb ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 16:22 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
?Me.listDBSelect & "\Dbdata.mdb" G:\New\Archive\2003\Dbdata.mdb ?acTable 0 ?arTables(Num) AditionField ?arLTables(Num) AditionField Все параметры, пробовал то же в рабочей базе на другом компе - отличий нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 16:33 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
2 Hummer А хрен его знает, с этим к тов. Гейтсу 2 DinN Блин... А имя таблицы-то для импорта где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 17:08 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
2 AlexJuice :) Фигня - форма, на форме кнопка, под кнопкой вызов процедуры. В процедуре ставим брейкпойнт, ходим дальше по любым модулям, лезем куда угодно. Открываем форму и жмём на кнопку. Что, брейкпойнт не сработает?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 17:15 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Ага, про имена таблиц понял. Тогда не знаю :-( Только что попробовал, взяв в качестве источника базу в чужой папке, подключенной как диск. Все работает, даже если в той базе таблицу открыть в конструкторе. То ли проблема в системе... а таблица такая точно есть? Кстати, можно обойтись одним массивом, если имена таблиц одинаковые! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 17:16 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
2 Hummer Мое замечание относилось к запуску процедуры "синим треугольничком" в редакторе VB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 17:19 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
2 AlexJuice Тогда вообще можно ничего не ставить, там есть Step Into, не помню как в ранних версиях, в XP точно есть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 17:23 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Типа, до ХРюши - уже ранние версии? Просто я ответил на один вопрос, а уже потом вспомнил, что чел хотел запустить из редактора, и написал еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 17:26 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
2 AlexJuice А что, поздние?:) Просто уточнить захотелось, что имелось в виду:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 17:35 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Такая база реально существует! Проблема наверняка в системе (только вот где) Были случаи, когда вез эту базу на две точки (там по одному компу) на одной точке установка без проблем (база и приложение на С:, путь к базе указал соответственно), ставлю с этого же диска базу на другую точку- ошибка оргумента тогда извращался следующим образом(некогда было разбираться): на компе, где с базой все впорядке, делаю копию .mdb и копию приложения на диске С в отдельном каталоге и делаю все то же что и на точке где не пашет и все проходит нормально, затем копирую именно эту связку(база+приложение) на диск и ставлю на злополучную точку.. все окей проблема приходит с переустановкой системы, грешил на Access, но установка с разных дисков (новых, взятых у знакомых и др) показала, сто проблемс не в этом, тогда где? Access знаю плохо, чтобы сообразить, подскажите плиз, может я упускаю какие - то настройки по незнанию, может это связано с сетью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 17:36 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
to AlexJuice .mdb на сетевом диске если скопировать приложение и .mdb на комп где все пашет и прописать путь к базе соотв на С например и запустить, то потом эту связку(прилож +.mdb ) без проблем можно запускать на любой машине, все пашет мож настройки какие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 17:54 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
Возможно, эти таблицы уже прилинкованы, и при перелинковке Аксесс ищет их на прежнем месте, где их нет... Хотя не должен. Не знаю :-((( Но если они действительно уже есть, можно попробовать сначала их удалить CurrentDb.TableDefs.Delete "MyTab" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 18:20 |
|
||
|
связать таблицы в Аccess
|
|||
|---|---|---|---|
|
#18+
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 и походу грохает табл перед линковкой... Всем спасибо за участие! Берусь за эту проблему с пристрастием, результат сообщу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2004, 09:45 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1676959]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
187ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 539ms |

| 0 / 0 |
