Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: MSysObjects
 
 автор: ddi   (24.06.2011 в 16:27)   личное сообщение
 
 

Люди добрые зарание скажу не силён в запросах...
У меня вот такая идя если кто-то знает где есть такой пример потскажитье
хачю зделать програму катроая запускалас где она бы и небыла (с программый другие бд котроые соединаюца линком ) как понял вся инфа находица в таблице 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
не ругайти что так много запросов я потом их сокращю
и если кто может перевизти всё это в вба чтобы програмно всё было

  Ответить  
 
 автор: osmor   (24.06.2011 в 16:32)   личное сообщение
 
 

MSysObjects напрямую обновлять нельзя
вот это почитайте
http://hiprog.com/index.php?option=com_content&task=view&id=416

ЗЫ. Заранее извиняюсь, если вопрос покажется обидным.
Для Вас русский язык не родной?

  Ответить  
 
 автор: ddi   (24.06.2011 в 16:34)   личное сообщение
 
 

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

  Ответить  
 
 автор: osmor   (24.06.2011 в 17:05)   личное сообщение
 
 

ясно.
Вот здесь есть модуль перелинковки связанных таблиц

http://hiprog.com/index.php?option=com_content&task=view&id=251661617

  Ответить  
 
 автор: ddi   (24.06.2011 в 16:39)   личное сообщение
 
 


ник: osmor
MSysObjects напрямую обновлять нельзя
вот это почитайте
http://hiprog.com/index.php?option=com_content&task=view&id=416
ЗЫ. Заранее извиняюсь, если вопрос покажется обидным.
Для Вас русский язык не родной?


спастбо но это не то

  Ответить  
 
 автор: Explorer   (24.06.2011 в 16:35)   личное сообщение
 
 

>>> Record(s) cannot be edited; no update permission on MSysObjects

это очень плохая идея

не надо руками лезть в системные таблицы Access, ничего хорошего не получится.

  Ответить  
 
 автор: ddi   (24.06.2011 в 16:40)   личное сообщение
 
 


ник: Explorer
>>> Record(s) cannot be edited; no update permission on MSysObjects

это очень плохая идея

не надо руками лезть в системные таблицы Access, ничего хорошего не получится.


а я папробую мне ни лень

  Ответить  
 
 автор: Explorer   (24.06.2011 в 16:50)   личное сообщение
 
 

>>> а я папробую мне ни лень

не в этом дело
Access сам обновляет информацию в системных таблицах, пользователь не сможет этого сделать

  Ответить  
 
 автор: kot_k_k   (24.06.2011 в 16:38)   личное сообщение
 
 

если не прав поправь

тебе нужно программно перелинковать таблицы?



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

как то так

  Ответить  
 
 автор: ddi   (24.06.2011 в 16:41)   личное сообщение
 
 

kot_k_k а по падробнее

  Ответить  
 
 автор: ddi   (24.06.2011 в 16:41)   личное сообщение
 
 

так через запроса не вазможно обнавить эту таблицу ?

  Ответить  
 
 автор: kot_k_k   (24.06.2011 в 17:07)   личное сообщение
 
 

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 таблиці

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList