Как получить свойство Description у AccessObject

vladK
Дата: 28.05.2004 13:45:10
Извините, если где и было - не нашёлю Нужно такое

Dim obj  As AccessObject
    Dim prop As AccessObjectProperty
    
    Dim strTmpPath As String
            strTmpPath = Environ$("TEMP")
    
    'Queries'
        For Each obj In Application.CodeData.AllQueries

             If obj.Properties("Description") Like strDescription & "*" Then
                    Debug.Print obj.Name
                    'Application.SaveAsText acQuery, obj.Name, strTmpPath & "\" & obj.Name'
             End If
        Next obj
        
     'Forms'

     For Each obj In Application.CodeProject.AllForms
            
             If obj.Properties("Description") Like strDescription & "*" Then
                    Debug.Print obj.Name
                    'Application.SaveAsText acForm, obj.Name, strTmpPath & "\" & obj.Name'
             End If
        Next obj
End Sub
Ошибка где пробую получить obj.Properties("Description")
А в отладчике показывает, что нет вообще никаких свойств у объекта obj.
Ну допустим Description запроса, я могу получить через DAO.QueryDef.Properties, а с формами и отчетами как?
Лифчик
Дата: 28.05.2004 13:55:17
Для таблиц такая цепочка работает:
db.Containers("Tables").Documents(TableName).Properties("Description")
формы и отчеты туда же прокопай
Владимир Саныч
Дата: 28.05.2004 14:02:50
Для форм и отчетов надо сделать еще одну вещь дополнительно. Те пропертя, которые доступны через db.Containers(...).Documents(TableName).Properties, - это только часть. Чтобы получить остальную часть, надо открыть форму/отчет в конструкторе, пройти по ее/его свойствам и закрыть. Примерно так:

dim d as document,p as property
for each d in db.Containers("Forms").Documents
for each p in d.properties
...
next
docmd.openform d.name,acDesign
for each p in forms(d.name).properties
...
next
docmd.close acForm,d.name
next
Shuhard
Дата: 28.05.2004 14:09:06
присоединяюсь
For Each docLoop In MyDb.Containers!Forms.Documents
For Each docLoop In MyDb.Containers!Reports.Documents
For Each docLoop In MyDb.Containers!Modules.Documents
For Each docLoop In MyDb.Containers!Scripts.Documents
For Each MyTbl In MyDb.TableDefs
For Each MyQuer In MyDb.QueryDefs
vladK
Дата: 28.05.2004 14:44:28
Спасибо всем,
Shuhard, Ваш вариант работает, и что странно без дополнительных действий описанных Владимиром Санычем. И ещё интересно, что в хелпе к А2000 ни словом не упоминается что в этих контейнерах есть формы и отчеты, зато говорится (или я так понял), что под Tables понимаются также и запросы, а проверка показывает, что это не так и поэтому применяю DAO.QueryDef.
Владимир Саныч
Дата: 28.05.2004 14:48:51
Повторяю, что с моими дополнительными действиями пропертей будет получено больше.
vladK
Дата: 28.05.2004 14:52:53
Нет соврал, Tables действительно это и таблицы и запросы, но при таком обращении у них нет Description, а у запросов есть - во как. Так что проще, действительно, таблицы и запросы брать через DAO, а остальное через контейнеры.
vladK
Дата: 28.05.2004 14:55:13
Саныч - принял к сведению, спасибо.
Shuhard
Дата: 28.05.2004 15:02:40
Саныч к разговору
For Each MyQuer In MyDb.QueryDefs
показывает набор стелс-запросов начинающихся с ~ по штуке на список/поле со списком в форме и имеющих недокументированный тип 3
сжатие базы их стирает а компиляция восстанавливает содержимое RecordSource списков

не знаешь есть ли способ их программной генерации - цель скрытие от User -a
Владимир Саныч
Дата: 28.05.2004 15:07:51
Уууууу... (из анекдота про паровоз).
Нет, это слишком круто для меня.