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

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

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

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

mahoune
...
Рейтинг: 0 / 0
21.08.2003, 12:39
    #32243073
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Может пригодится
Код: 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
21.08.2003, 12:41
    #32243083
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
через DAO
currentdb.Containers("forms").Documents("ИмяФормы").Properties("Description")
...
Рейтинг: 0 / 0
21.08.2003, 13:49
    #32243226
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Код: 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
21.08.2003, 14:23
    #32243303
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Код: plaintext
1.
With Application.CurrentDb
For Each docum In .Containers( "Tables" ).Documents
...
Рейтинг: 0 / 0
21.08.2003, 15:10
    #32243398
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Саныч, спасибо! Один забор преодолели. Теперь другой. Я, видимо, какие-то концептуальные вещи не прочувствовал:
Код: 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
21.08.2003, 15:41
    #32243479
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Я себе это скопировал, у меня работает...
...
Рейтинг: 0 / 0
21.08.2003, 15:52
    #32243505
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
У меня тоже этот код спокойно прошуршал. Win98+AccessXp
...
Рейтинг: 0 / 0
21.08.2003, 16:01
    #32243528
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Однако, и здесь работает магическое:

Код: plaintext
Dim prop As DAO.Property

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

Спасибки!
...
Рейтинг: 0 / 0
21.08.2003, 16:06
    #32243536
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Да, да..... :-) А ведь Гетц всегда предупреждал, объявляйте переменные полностью...
...
Рейтинг: 0 / 0
22.08.2003, 03:27
    #32243989
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
О! А кто-нибудь может научно объяснить разницу между
Код: 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
22.08.2003, 09:16
    #32244095
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Да, меня этот вопрос тоже волнует. Хотя, подозреваю, что шаманское действо, производимое Аксессом по With не для моего среднего ума.
...
Рейтинг: 0 / 0
22.08.2003, 10:48
    #32244240
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
>Да, меня этот вопрос тоже волнует. Хотя, подозреваю, что шаманское действо, производимое Аксессом по 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
22.08.2003, 11:20
    #32244320
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Спасибо за предупреждение про 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
22.08.2003, 11:43
    #32244364
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
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
22.08.2003, 11:57
    #32244394
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Спасибо, очень все ценно оказалось.
А перебирал я, чтобы вообще технологию обращений понять. Теперь вот кажется лучше стал понимать.
...
Рейтинг: 0 / 0
22.08.2003, 14:31
    #32244694
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Все получилось, но есть ньюансы, которые хочу высказать. А для этого расскажу, чего задумал.
Хочу для почти всех комбобоксов в своей программе на событие 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
22.08.2003, 14:55
    #32244770
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Ничего не понимаю

работает
Код: 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
22.08.2003, 14:59
    #32244784
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Потому что у CurrentDb есть такая особенность.\r
\r
/topic/42529
...
Рейтинг: 0 / 0
22.08.2003, 15:09
    #32244811
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из кода добраться до Properties>General>Description?
Как все интересно...

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


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


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