powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как из кода добраться до Properties>General>Description?
23 сообщений из 23, страница 1 из 1
Как из кода добраться до Properties>General>Description?
    #32242921
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...которые можно задавать в окне базы данных каждому объекту, кликнув по правой почке мыши.

Просветите ли?

Спасибо.
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32242973
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное где-то тут:
Application.CurrentProject.AllForms
Application.CurrentProject.AllModules
Application.CurrentProject.AllMacros
Application.CurrentProject.AllReports

mahoune
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32243040
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот мне хотелось бы как раз от таблицы это свойство выудить. Где?
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32243072
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Application.CurrentDb.TableDefs

mahoune
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32243073
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может пригодится
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
 'перекачка описаний таблиц из БД с таблицами в интерфейсную базу
    
Dim dbs As Database, ctr As Container, doc As Document
Dim dbs1 As Database, ctr1 As Container, doc1 As Document
Dim prpDesc As Property
Dim strDesc As String
   
   Set dbs = OpenDatabase("C:\BD.mdb", True)
       ' Возвращает ссылку на текущую базу данных.
    Set dbs1 = CurrentDb
 
    Set ctr = dbs.Containers!Tables
    Set ctr1 = dbs1.Containers!Tables
    ' Перечень содержимого семейства Documents
    For Each doc In ctr.Documents
    
     On Error Resume Next
    
       
      
       strDesc = doc.Properties( "Description" )
       
       For Each doc1 In ctr1.Documents
        If doc1.Name = doc.Name Then
        Set prpDesc = doc1.CreateProperty( "Description" , dbText, doc.Properties( "Description" ))
        doc1.Properties.Append prpDesc
        
        End If
       Next doc1

    Next doc

Set dbs = Nothing
Set dbs1 = Nothing
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32243083
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
через DAO
currentdb.Containers("forms").Documents("ИмяФормы").Properties("Description")
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32243226
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
Dim cont As Container
Dim docum As Document
For Each cont In Application.CurrentDb.Containers
Debug.Print cont.Name
Next cont

Получаю
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
DataAccessPages
Databases
Forms
Modules
Relationships
Reports
Scripts
SysRel
Tables

а далее на
Код: plaintext
1.
2.
For Each docum In Application.CurrentDb.Containers( "Tables" ).Documents
Debug.Print docum.Name
Next docum

Получаю:
Object is invalid or no longer set. (Error 3420)

...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32243303
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Код: plaintext
1.
With Application.CurrentDb
For Each docum In .Containers( "Tables" ).Documents
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32243398
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, спасибо! Один забор преодолели. Теперь другой. Я, видимо, какие-то концептуальные вещи не прочувствовал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim docum As Document
Dim prop As Property
With Application.CurrentDb
For Each docum In .Containers( "Tables" ).Documents
    With docum
    For Each prop In .Properties '-Type mismatch (Error  13 )
    Debug.Print prop.Name
    Next prop
    End With
Next docum
End With


Несоответствие типов. Вроде пропети как пропети?
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32243479
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я себе это скопировал, у меня работает...
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32243505
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня тоже этот код спокойно прошуршал. Win98+AccessXp
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32243528
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако, и здесь работает магическое:

Код: plaintext
Dim prop As DAO.Property

ибо это проперти еще у какого-то ADODB есть.

Спасибки!
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32243536
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, да..... :-) А ведь Гетц всегда предупреждал, объявляйте переменные полностью...
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32243989
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! А кто-нибудь может научно объяснить разницу между
Код: plaintext
1.
For Each docum In Application.CurrentDb.Containers( "Tables" ).Documents

и
Код: plaintext
1.
With Application.CurrentDb
For Each docum In .Containers( "Tables" ).Documents

и пошто первая не работает.
А то уже четыре года лежит этот вопрос, мучаюсь :)
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32244095
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, меня этот вопрос тоже волнует. Хотя, подозреваю, что шаманское действо, производимое Аксессом по With не для моего среднего ума.
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32244240
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Да, меня этот вопрос тоже волнует. Хотя, подозреваю, что шаманское действо, производимое Аксессом по With не для моего среднего ума.

Не обязательно использовать With CurrentDb
Можно объявить переменную
Dim db as DAO.Database, doc as DAO.Document
Set db = CurrentDb
For Each doc In Db.Containers("Tables").Documents

И это тоже будет работать ... (я так обычно делаю)

Вот мнение Dev Ashish по этому поводу

От:Dev Ashish (dash10@hotmail.com)
Заголовок:Re: Interesting (?) finding re: CurrentDb
Группы новостей:comp.databases.ms-access, microsoft.public.access.formscoding
Число:1998/09/11

Hi Andy,

My apologies if this sounds completely cuckoo.

I think this might also have something to do with how deep are we going in
the hierarchy. While currentdb.Tabledefs and CurrentDb.Containers work in
the same fashion as you describe, the problem comes up again when we want
to go one level deeper.

For Each doc In CurrentDb.Containers!Forms.Documents
Debug.Print doc.Name
Next

or

For Each fld In Currentdb.TableDefs(0).Fields
Debug.Print fld.Name
Next

It seems to me that the parent object persists if we're looking one level
deep, but it refuses to work for any "grandchildren".

-- Dev
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32244320
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за предупреждение про TableDef. Container у меня заработал, но теперь ставит в тупик код:
Код: plaintext
1.
2.
3.
Dim flds As DAO.Fields
Dim tdef As TableDef
Set tdef = CurrentDb.TableDefs(TableName)
Set flds = tdef.Fields
Object is invalid or no longer set. (Error 3420)

Что за черт, ведь вроде как Вы и Саныч советуете описал, TableDef как DAO.TableDef не описывается



И вообще - как добраться до значений различных полей в описании таблицы (конкретно мне нужно Description описания поля)?
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32244364
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Лифчик

Объявляйте вы
Dim db as DAO.Database
Dim flds As DAO.Fields
Dim tdef As TableDef

Set db = CurrentDb
Set tdef = db.TableDefs(TableName)
Set flds = tdef.Fields

И ошибки не будет, а если просто надо получить значение свойства Description конкретного поля конкретной таблицы, а не перебеирать их, то можно просто
CurrentDb.TableDefs(TableName).Fields(FieldName).Properties("Description")

Только если свойство не было задано, будет ошибка 3270.
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32244394
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, очень все ценно оказалось.
А перебирал я, чтобы вообще технологию обращений понять. Теперь вот кажется лучше стал понимать.
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32244694
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все получилось, но есть ньюансы, которые хочу высказать. А для этого расскажу, чего задумал.
Хочу для почти всех комбобоксов в своей программе на событие NotinList повесить одну на всех процедуру, которая добавляет запись в соответствующую таблицу. Вот ее начало -
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Sub TableAddRecord(TableName As String, FieldName As String, NewData As String, Response As Integer)
Dim db As DAO.Database
Dim fldDescription As String
Dim fld As DAO.Field
Dim tblDescription As String
Dim tdef As TableDef
Dim i As Integer
On Error GoTo err:
Set db = CurrentDb
Set tdef = db.TableDefs(TableName)
Set fld = tdef.Fields(FieldName)
i =  0 
tblDescription =  " информация из описания к ней: <"  & _
db.Containers( "Tables" ).Documents(TableName).Properties( "Description" ) &  ">;" 
i =  1 
fldDescription =  " в котором содержится информация о <"  & _
fld.Properties( "Description" ) &  ">;" 
    
    If MsgBox( "Таблица <"  & TableName &  ">; "  & tblDescription & _
     "поле <"  & FieldName &  ">; "  & fldDescription & _
     " нет значения <"  & NewData &  ">, добавим?" , _
         vbOKCancel) = vbOK Then

Ну так это все работает...но медленно!
Я так понимаю, что из-за Set'ов. Может стоит при первоначальной загрузке Set произвести?
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32244770
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего не понимаю

работает
Код: plaintext
1.
2.
3.
4.
5.
Dim docum As Document
With CurrentDb
For Each docum In .Containers( "Tables" ).Documents
Debug.Print docum.Name
Next docum
End With


не работает
Код: plaintext
1.
2.
3.
4.
5.
Dim docum As Document
With CurrentDb.Containers( "Tables" )
For Each docum In .Documents
Debug.Print docum.Name
Next docum
End With 


Дьявол!
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32244784
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Потому что у CurrentDb есть такая особенность.\r
\r
/topic/42529
...
Рейтинг: 0 / 0
Как из кода добраться до Properties>General>Description?
    #32244811
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как все интересно...

Такими темпами я скоро в цыклопические ссылки упрусь


Вот почему медленно-та!
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как из кода добраться до Properties>General>Description?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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