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

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

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

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

Не получится поменять свойство уже созданного TableDef. Только ампутация.
...
Рейтинг: 0 / 0
как поменять пути в связанных таблицах
    #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
как поменять пути в связанных таблицах
    #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
как поменять пути в связанных таблицах
    #32704129
Фотография kedzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
как поменять пути в связанных таблицах
    #32704146
evg_l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, все получилось. :)
...
Рейтинг: 0 / 0
как поменять пути в связанных таблицах
    #32704901
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложил свой способ решения проблемы:
http://am.rusimport.ru/MSAccess/topic.aspx?ID=394
Если кто будет пользовать и найдет ошибки, пишите.
...
Рейтинг: 0 / 0
как поменять пути в связанных таблицах
    #32704935
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Geo

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

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

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

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

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

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

ЗЫ. Здоровы вы поговорить, утренний топик уже на 2-й странице...
...
Рейтинг: 0 / 0
как поменять пути в связанных таблицах
    #32707576
Фотография 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
как поменять пути в связанных таблицах
    #32707623
кедзо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GeoА что значит 2-12?


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

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


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