|
|
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
Есть каталог в нем два файла form.mdb и tab.mdb. В одном формы в другом таблицы. Из формы идет ссылка на связанные таблицы. Есть каталог с:\kat\ где оба файла расположены. Выложил это на сервер, создал каталог на с:\kat. На рабочем столе установил ярлык, который запускает формы. Вопрос: Как сделать, чтобы при переносе файлов в другой каталог или на другой сервер автоматически подхватывать текущий каталог и менять ссылку на таблицы программно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 12:38:28 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
В файле с формами CurrentDb.Name -возвращает полное имя текущего файла, например С:\КАТ\form.mdb Имя файла form.mdb занимает 8 символов, значит Left(CurrentDb.Name, Len(CurrentDb.Name)-8) будет возвращать текущий каталог. Далее соответствующим образом меняете свойство Connect связанных таблиц. Все это удобно проделывать по событию OnLoad в форме, которая запускается автоматически при запуске программы (в Вашем случае form.mdb). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 12:49:00 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
Лучше бы не автоматически, а дать путь, тогда можно будет пользоваться и сетью и совместным использованием БД при получении пути придется удалить все прилинкованные таблицы и создать их вновь см CreateTableDef Method ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 12:50:30 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
Далее соответствующим образом меняете свойство Connect связанных таблиц. Не получится поменять свойство уже созданного TableDef. Только ампутация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 12:58:33 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
For Each TblDf1 In CurrentDb.TableDefs If (Mid(TblDf1.Name, 1, 1) = "t") Then 'Тут какое-нибудь условие, чем твои связанные таблички отличаются от локальных TblDf1.Connect = ";Database=" & sPath TblDf1.RefreshLink End If Next TblDf1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 13:05:01 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
Например так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 13:08:50 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 13:09:35 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, все получилось. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 13:13:52 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
Выложил свой способ решения проблемы: http://am.rusimport.ru/MSAccess/topic.aspx?ID=394 Если кто будет пользовать и найдет ошибки, пишите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 17:27:08 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
2 Geo ЭХ... иногда надо линковать то к MDB, то через ODBC к MSSQL причем к MSSQL лучше грохать и заново пересоздавать ибо если в структуре линкованного объекта изменения - беда пробовал в делать с передачей в качестве файла диалогу подсовывать DSN файл и распознавать строку из него , но тоже свои траблы - что то работает, но так до ума и не довел ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 17:37:01 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
С ODBC я никогда не работал, о чем упомянул там, поэтому мне неведомо, что ты говоришь :) Мне нужна была прилада "для ленивых" для mdb, принес файл(ы) от клиента домой, и не возиться с "надстройки/диспетчер связанных таблиц" (если он есть), особенно если таблицы из разных файлов тянутся, а нажать кнопку, и все само сделалось. Кстати, сегодня встретил, откуда это выросло: /topic/41313 :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 18:53:49 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
>нажал кнопку А я и кнопку не жму. У меня есть параметр refreshlink, он NO для многопользовательской работы. А если YES, то приложение ищет свои таблички рядом с собой. Так что можно просто копировать папочку программы в любое место и не парится,будет работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2004, 07:19:20 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
Выложил файлы на сервер. Пути определяются, все хорошо. Стали стучаться с двух компов к БД. Если ставить автоматическое определение путей при запуске главной формы, то первый пользователь заблокирует БД. А второй получил сообщение об ошибке. Не хотелось бы давать пользователям лишний раз нажимать на кнопки прилинковки таблиц. У кого диск подлючен, кто введет путь в адресной строке. 1)Т.е. у первое диск подключен как f:\имя.mdb 2)А второй наберет \\ntNNN\kat\имя.mdb Получитсся ерунда. Как сделать по уму? Мне для сетевого варианта нужен второй вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2004, 09:56:56 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
Сейчас убегаю, вечером сегодня посмотрю и отвечу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2004, 09:58:59 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
2-12 ЖДУ... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2004, 11:27:10 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
А что значит 2-12? Прибежал, кстати, сейчас попробую посмотреть... (сил, правда, уже нету совсем. Окончание недели обещает дать продольную трещину (и превратиться в ж..) в смысле свободного времени.) ЗЫ. Здоровы вы поговорить, утренний топик уже на 2-й странице... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2004, 19:43:27 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
Попробовал. Получилось, если 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 (который его собрал из кликов пользователя), и им пользуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2004, 20:51:27 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
GeoА что значит 2-12? это из очень известного фильма. герой поднимает трубку и туда говорит. но я забыл из какого... то ли из "Собачье сердце", то ли из Жеглова. Все-таки, Преображенский наверное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2004, 22:31:43 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
"2-12" - это фраза из старого доброго советского фильма, что-то про перемещения во времени из нашего в послевоенные, так на автомате написал, к делу не относится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 09:11:16 |
|
||
|
как поменять пути в связанных таблицах
|
|||
|---|---|---|---|
|
#18+
Geo, спасиб, все понял. У меня все работает, просто админ уперся и со своей стороны отказывается совершать какие-нибудь действия. Ему просто лень. Вот такие гады встречаются на пути честных работяг. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 09:17:36 |
|
||
|
|

start [/forum/topic.php?fid=45&gotonew=1&tid=1671561]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 385ms |

| 0 / 0 |
