Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как поменять пути в связанных таблицах / 20 сообщений из 20, страница 1 из 1
21.09.2004, 12:38:28
    #32704051
evg_l
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
Есть каталог в нем два файла form.mdb и tab.mdb. В одном формы в другом таблицы. Из формы идет ссылка на связанные таблицы. Есть каталог с:\kat\ где оба файла расположены. Выложил это на сервер, создал каталог на с:\kat. На рабочем столе установил ярлык, который запускает формы.
Вопрос:
Как сделать, чтобы при переносе файлов в другой каталог или на другой сервер автоматически подхватывать текущий каталог и менять ссылку на таблицы программно.
...
Рейтинг: 0 / 0
21.09.2004, 12:49:00
    #32704071
v-metallic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
В файле с формами
CurrentDb.Name -возвращает полное имя текущего файла, например С:\КАТ\form.mdb

Имя файла form.mdb занимает 8 символов, значит
Left(CurrentDb.Name, Len(CurrentDb.Name)-8) будет возвращать текущий каталог.

Далее соответствующим образом меняете свойство Connect связанных таблиц.

Все это удобно проделывать по событию OnLoad в форме, которая запускается автоматически при запуске программы (в Вашем случае form.mdb).
...
Рейтинг: 0 / 0
21.09.2004, 12:50:30
    #32704075
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
Лучше бы не автоматически, а дать путь, тогда можно будет пользоваться и сетью и совместным использованием БД
при получении пути придется удалить все прилинкованные таблицы и создать их вновь см CreateTableDef Method
...
Рейтинг: 0 / 0
21.09.2004, 12:58:33
    #32704095
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
Далее соответствующим образом меняете свойство Connect связанных таблиц.

Не получится поменять свойство уже созданного TableDef. Только ампутация.
...
Рейтинг: 0 / 0
21.09.2004, 13:05:01
    #32704115
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
For Each TblDf1 In CurrentDb.TableDefs
If (Mid(TblDf1.Name, 1, 1) = "t") Then 'Тут какое-нибудь условие, чем твои связанные таблички отличаются от локальных
TblDf1.Connect = ";Database=" & sPath
TblDf1.RefreshLink
End If
Next TblDf1
...
Рейтинг: 0 / 0
21.09.2004, 13:08:50
    #32704127
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
Например так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Set pdb = CurrentDb()
    Dim qd As TableDefs
    Set qd = pdb.TableDefs
    Dim A As TableDef
    For Each A In qd
        If A.connect = ";DATABASE=oldpath.mdb" Then
            A.connect = ";DATABASE=newpath.mdb"
            A.RefreshLink
        End If
    Next
...
Рейтинг: 0 / 0
21.09.2004, 13:09:35
    #32704129
kedzo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
...
Рейтинг: 0 / 0
21.09.2004, 13:13:52
    #32704146
evg_l
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
Всем спасибо, все получилось. :)
...
Рейтинг: 0 / 0
21.09.2004, 17:27:08
    #32704901
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
Выложил свой способ решения проблемы:
http://am.rusimport.ru/MSAccess/topic.aspx?ID=394
Если кто будет пользовать и найдет ошибки, пишите.
...
Рейтинг: 0 / 0
21.09.2004, 17:37:01
    #32704935
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
2 Geo

ЭХ...
иногда надо линковать то к MDB, то через ODBC к MSSQL
причем к MSSQL лучше грохать и заново пересоздавать ибо если в структуре линкованного объекта изменения - беда

пробовал в делать с передачей в качестве файла диалогу подсовывать DSN файл и распознавать строку из него , но тоже свои траблы - что то работает, но так до ума и не довел ...
...
Рейтинг: 0 / 0
21.09.2004, 18:53:49
    #32705132
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
С ODBC я никогда не работал, о чем упомянул там, поэтому мне неведомо, что ты говоришь :)

Мне нужна была прилада "для ленивых" для mdb, принес файл(ы) от клиента домой, и не возиться с "надстройки/диспетчер связанных таблиц" (если он есть), особенно если таблицы из разных файлов тянутся, а нажать кнопку, и все само сделалось.

Кстати, сегодня встретил, откуда это выросло: /topic/41313
:))
...
Рейтинг: 0 / 0
22.09.2004, 07:19:20
    #32705435
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
>нажал кнопку

А я и кнопку не жму. У меня есть параметр refreshlink, он NO для многопользовательской работы. А если YES, то приложение ищет свои таблички рядом с собой. Так что можно просто копировать папочку программы в любое место и не парится,будет работать.
...
Рейтинг: 0 / 0
22.09.2004, 09:56:56
    #32705601
evg_l
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
Выложил файлы на сервер. Пути определяются, все хорошо. Стали стучаться с двух компов к БД. Если ставить автоматическое определение путей при запуске главной формы, то первый пользователь заблокирует БД. А второй получил сообщение об ошибке. Не хотелось бы давать пользователям лишний раз нажимать на кнопки прилинковки таблиц. У кого диск подлючен, кто введет путь в адресной строке.
1)Т.е. у первое диск подключен как f:\имя.mdb
2)А второй наберет \\ntNNN\kat\имя.mdb
Получитсся ерунда. Как сделать по уму? Мне для сетевого варианта нужен второй вариант.
...
Рейтинг: 0 / 0
22.09.2004, 09:58:59
    #32705608
Гео
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
Сейчас убегаю, вечером сегодня посмотрю и отвечу
...
Рейтинг: 0 / 0
22.09.2004, 11:27:10
    #32705904
evg_l
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
2-12 ЖДУ... :)
...
Рейтинг: 0 / 0
22.09.2004, 19:43:27
    #32707509
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
А что значит 2-12?

Прибежал, кстати, сейчас попробую посмотреть... (сил, правда, уже нету совсем. Окончание недели обещает дать продольную трещину (и превратиться в ж..) в смысле свободного времени.)

ЗЫ. Здоровы вы поговорить, утренний топик уже на 2-й странице...
...
Рейтинг: 0 / 0
22.09.2004, 20:51:27
    #32707576
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
Попробовал. Получилось, если 10 раз создал связь примерно со 100 таблицами. Иначе сам не успевал. Причем получилось "в одну сторону". Если я обновляю связи в одном файле (именно обновляю, а не проверяю. Tabledefs(0).fields(0).name вроде-бы ничего не блокирует), другой файл не может открыть таблицу из общей базы. А наоборот, если в одном файле я открыл таблицу (для чтения), то обработка связей из другого файла проходит нормально.

Вообще говоря, мне не очень хочется узнавать, почему tabledefs(n).refreshlink блокирует базу. Может ему так надо. А надо ли нам с этим бороться в данном случае? Разве операция обновления связей в mdb бывает конвеерной? Она нужна один раз в (хотел сказать "день":) обновление версии на одного клиента (в худшем случае). А то и один раз на всех:Программист/внедренец/обслуженец приехал, один раз запустил файл, и либо руками, либо автоматом раздал его юзерам. Если при этом он не дал кому-то работать, вопрос другой, но как этого добиться? Сейчас попробую одной программой в цикле посоздавать записей, а другой "подцепиться" этой программой к базе...
...Попробовал. Все нормально. Связи обновились, в программе, обновляющих данные базы, ошибок не было.

Во всяком случае, сам я не могу понять, с чем и зачем мне здесь надо бороться...

автор Не хотелось бы давать пользователям лишний раз нажимать на кнопки прилинковки таблиц.

Ну и не надо. В каких случаях могут отвалиться линки? Я знаю:
1. при обновлении версии,
2. при установке программы на новый к-р
3. при падении сервера
4. при удалении базы с диска или ее разрушении
и т.д.

1-й и 2-й случай - целиком и полностью на совести разработчика. Ему я и помогаю.
3-й и 4-й можно даже с натяжкой назвать форс-мажором. Но если юзер не сможет найти файл(ы) с подходящими таблицами, то ни одна ссылка изменена не будет. Ему просто предложат "связаться с разработчиком".

Не нужна пользователю кнопка эта. Достаточно проверки при запуске или в обработчике ошибок.

автор1)Т.е. у первое диск подключен как f:\имя.mdb
2)А второй наберет \\ntNNN\kat\имя.mdb
Получитсся ерунда.
Ну это тем более на совести того, кто линкует таблицы. Кто мешает даже при наличии подсоединенного сетевого диска дойти до базы со стороны "Сетевого окружения"? Акцесс (и я с ним заодно здесь) не будет разбираться, есть подключеный диск с таким путем, или его нет, запускался ли subst чи ни. Он видит путь, который ему вернул FileOpenDialog (который его собрал из кликов пользователя), и им пользуется.
...
Рейтинг: 0 / 0
22.09.2004, 22:31:43
    #32707623
кедзо
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
GeoА что значит 2-12?


это из очень известного фильма.
герой поднимает трубку и туда говорит.

но я забыл из какого... то ли из "Собачье сердце", то ли из Жеглова. Все-таки, Преображенский наверное...
...
Рейтинг: 0 / 0
24.09.2004, 09:11:16
    #32709670
evg_l
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
"2-12" - это фраза из старого доброго советского фильма, что-то про перемещения во времени из нашего в послевоенные, так на автомате написал, к делу не относится :)
...
Рейтинг: 0 / 0
24.09.2004, 09:17:36
    #32709679
evg_l
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как поменять пути в связанных таблицах
Geo, спасиб, все понял. У меня все работает, просто админ уперся и со своей стороны отказывается совершать какие-нибудь действия. Ему просто лень. Вот такие гады встречаются на пути честных работяг. :)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как поменять пути в связанных таблицах / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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