|
|
|
| Люди добрые зарание скажу не силён в запросах...
У меня вот такая идя если кто-то знает где есть такой пример потскажитье
хачю зделать програму катроая запускалас где она бы и небыла (с программый другие бд котроые соединаюца линком ) как понял вся инфа находица в таблице MSysObjects а чтобы достать их оттуда и нечево лишнево создал запрос
SELECT MSysObjects.Id, MSysObjects.Name, MSysObjects.Database
FROM MSysObjects
WHERE (((MSysObjects.Type)=6) AND ((Left([Name],4))<>"MSys" And (Left([Name],4))<>"USys"));
|
копировал два поля из нево Database и Name и создал таблицу (таблица1)и поместил туда даные патом удалил сылку путьи из Database до корнивой папки (наприме путь програмы d:\myprog\[здес и лежит программа] ну и в этой папке есть и другие папки оставил толко их пут палочилось temp\ : db\ и т. д.)
создал запрос для таблицы1
SELECT таблица1.name, getAppPath() & [Database] AS Database
FROM таблица1;
|
функиция
Public Function getAppPath() As String
getAppPath = Left(CurrentDb.name, Len(CurrentDb.name) - Len(dir(CurrentDb.name)))
End Function
|
всё работает создал ещё один запрос на обнавление чтобы обновить MSysObjects.Database
но он выдаёт ошибку
Record(s) cannot be edited; no update permission on MSysObjects
не ругайти что так много запросов я потом их сокращю
и если кто может перевизти всё это в вба чтобы програмно всё было | |
|
| |
|
|
|
| MSysObjects напрямую обновлять нельзя
вот это почитайте
http://hiprog.com/index.php?option=com_content&task=view&id=416
ЗЫ. Заранее извиняюсь, если вопрос покажется обидным.
Для Вас русский язык не родной? | |
|
| |
|
|
|
| Нет иностраный я говарить харашо мого без акцента но харашо панимаю но вот писать .... | |
|
| |
|
|
|
| ясно.
Вот здесь есть модуль перелинковки связанных таблиц
http://hiprog.com/index.php?option=com_content&task=view&id=251661617 | |
|
| |
|
|
|
|
ник: osmor
MSysObjects напрямую обновлять нельзя
вот это почитайте
http://hiprog.com/index.php?option=com_content&task=view&id=416
ЗЫ. Заранее извиняюсь, если вопрос покажется обидным.
Для Вас русский язык не родной?
|
спастбо но это не то | |
|
| |
|
|
|
| >>> Record(s) cannot be edited; no update permission on MSysObjects
это очень плохая идея
не надо руками лезть в системные таблицы Access, ничего хорошего не получится. | |
|
| |
|
|
|
|
ник: Explorer
>>> Record(s) cannot be edited; no update permission on MSysObjects
это очень плохая идея
не надо руками лезть в системные таблицы Access, ничего хорошего не получится.
|
а я папробую мне ни лень | |
|
| |
|
|
|
| >>> а я папробую мне ни лень
не в этом дело
Access сам обновляет информацию в системных таблицах, пользователь не сможет этого сделать | |
|
| |
|
|
|
| если не прав поправь
тебе нужно программно перелинковать таблицы?
Dim dbs As DAO.Database
Dim tbl As DAO.TableDef
Dim FName As String
Set dbs = CurrentDb
For Each tbl In dbs.TableDefs
If tbl.Connect <> "" Then
tbl.Connect = FName
tbl.RefreshLink
end if
Next tbl
|
как то так | |
|
| |
|
|
|
|
| так через запроса не вазможно обнавить эту таблицу ? | |
|
| |
|
|
|
| osmor дал ссылку - там про это
в кратце
у таблицы есть свойство Connect
Set dbs = CurrentDb - ссылка на нашу базу
For Each tbl In dbs.TableDefs - пробегаемся по всем таблицам нашей базы
If tbl.Connect <> "" Then - если Connect не пустой то его меняем на нужный нам путь
tbl.Connect = FName - вот тут FName = полученому тобой в запросе Database
tbl.RefreshLink - это обновление свойств таблицы
end if
Next tbl
|
можно вот так получить путь к файлу (серверная часть) на который ссылается твоя клиентская часть.
' получение пути к файлу
With Application.FileDialog(1)
.Title = "Поиск Файла"
.ButtonName = "Добавить"
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "*", "*.*", 1
result = .Show
FName = Trim(.SelectedItems.Item(1))
| тебе нужно дописать
коннект_для_таблиц =";DATABASE=" & FName
и получаем строку для свойства Connect таблиці | |
|
| |