Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в списке отобразить все имена моих функций??? / 25 сообщений из 25, страница 1 из 1
06.08.2011, 01:29
    #37383214
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
Как все имена таблиц, запросов, форм........ вывести в списке я знаю. Делаю запрос к таблице MSysObjects, а вот как вывести имена всех моих функций я незнаю. Кто знает подскажите пжл.
...
Рейтинг: 0 / 0
06.08.2011, 01:36
    #37383218
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
Из коллекции Serge Gavrilov

Код: 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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
Public Function AllProcs()
'Public Function AllProcs(ByVal strModuleName As String)
    'Dim mdl As Module
    Dim strModuleName
    Dim oVBComponent As Object
    Dim mdl As Object
    Dim lngCount As Long
    Dim lngCountDecl As Long
    Dim lngI As Long
    Dim strProcName As String
    'Dim astrProcNames() As String
    Dim colProcNames As Collection
    Dim intI As Integer
    Dim strMsg As String
    Dim lngR As Long
    Dim varItem
    ' Open specified Module object.
    'DoCmd.OpenModule strModuleName
    
    ' Return reference to Module object.
    'Set mdl = Modules(strModuleName)
    Set colProcNames = New Collection
    For Each oVBComponent In Application.VBE.ActiveVBProject.VBComponents
        Set mdl = oVBComponent.CodeModule
        strModuleName = mdl.Name
        ' Count lines in module.
        lngCount = mdl.CountOfLines
        
        ' Count lines in Declaration section in module.
        lngCountDecl = mdl.CountOfDeclarationLines
        
        ' Determine name of first procedure.
        strProcName = mdl.ProcOfLine(lngCountDecl +  1 , lngR)
        
        ' Initialize counter variable.
        intI =  0 
        
        ' Redimension array.
        'ReDim Preserve astrProcNames(intI)
        
        ' Store name of first procedure in array.
        'astrProcNames(intI) = strProcName
        colProcNames.Add mdl.Name & "." & strProcName
        ' Determine procedure name for each line after declarations.
        For lngI = lngCountDecl +  1  To lngCount
            ' Compare procedure name with ProcOfLine property value.
            If strProcName <> mdl.ProcOfLine(lngI, lngR) Then
                ' Increment counter.
                'intI = intI + 1
                strProcName = mdl.ProcOfLine(lngI, lngR)
                'ReDim Preserve astrProcNames(intI)
                ' Assign unique procedure names to array.
                'astrProcNames(intI) = strProcName
                colProcNames.Add mdl.Name & "." & strProcName
                
            End If
        Next lngI
    Next
    
'    strMsg = "Procedures in module '" & strModuleName & "': " & vbCrLf & vbCrLf
'    For intI = 0 To UBound(astrProcNames)
'        strMsg = strMsg & astrProcNames(intI) & vbCrLf
'    Next intI
    
    ' Message box listing all procedures in module.
    'MsgBox strMsg
    For Each varItem In colProcNames
        Debug.Print varItem
    Next
End Function
...
Рейтинг: 0 / 0
06.08.2011, 01:52
    #37383226
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
mds_world, Спасибо работает. вытягивает всё даже то что мне не надо, а как вывести только функции в модулях?
...
Рейтинг: 0 / 0
06.08.2011, 02:05
    #37383228
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
mds_world,
И как сделать чтобы в списке были имена и таблиц, запросов,......и функций?
...
Рейтинг: 0 / 0
06.08.2011, 02:07
    #37383230
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
Alekxmds_world, Спасибо работает. вытягивает всё даже то что мне не надо, а как вывести только функции в модулях?
Если есть префикс Form или Report, значит находится в модуле формы/отчета
...
Рейтинг: 0 / 0
06.08.2011, 02:08
    #37383232
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
AlekxИ как сделать чтобы в списке были имена и таблиц, запросов,......и функций?
Так вы ж, во первых строках объявили, что умеете получать их имена AlekxКак все имена таблиц, запросов, форм........ вывести в списке я знаю. Делаю запрос к таблице MSysObjects
...
Рейтинг: 0 / 0
06.08.2011, 02:11
    #37383235
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
mds_world, )) умею но как слепить в кучу незнаю
...
Рейтинг: 0 / 0
06.08.2011, 02:20
    #37383237
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
Alekx,

Вы хотите в одном списке на форме отобразить все? Зачем, если не секрет?
...
Рейтинг: 0 / 0
06.08.2011, 02:31
    #37383241
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
mds_world, если коротко, то есть таблица в ней поля TypeObject и NameObject. С полем TypeObject все ясно: таблицы, запросы, формы, отчёты, макросы, запуск программы. С полем NameObject тожке всё ясно кроме как получить имя функцыи, но без префикса и только тех которые в модулях. И причём все имена обьектов БД должны выпадать в списке2 в зависимости от того каой тип обьекта выбран в списке1.
...
Рейтинг: 0 / 0
06.08.2011, 02:39
    #37383243
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
Бобольшому счёту если можно все оьекты Бд вытянуть черес код без MSysObjects так это ещё лучше
...
Рейтинг: 0 / 0
06.08.2011, 14:27
    #37383476
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
Написал следующий код для вывода имён процедур в модулях:

Код: 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.
Function AllFunctions()

Dim mdl As String
Dim i As Integer
Dim cm As CodeModule
Dim lngCount As Long
    
    
    For i =  0  To CurrentProject.AllModules.Count -  1 
       
      mdl = CurrentProject.AllModules(i).Name
    
        Set cm = Application.VBE.ActiveVBProject. _
        VBComponents(mdl).CodeModule
      
        lngCount = cm.CountOfDeclarationLines +  1 
    
           Do Until lngCount >= cm.CountOfLines
            Debug.Print cm.ProcOfLine(lngCount, vbext_pk_Proc)
        
            lngCount = lngCount + cm.ProcCountLines( _
            cm.ProcOfLine(lngCount, vbext_pk_Proc), _
            vbext_pk_Proc)
           Loop

    Next i

End Function

имена выводятся, но выскакивает ошибка:

Sub Function not defined

как это подправить?
...
Рейтинг: 0 / 0
06.08.2011, 19:26
    #37383629
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
Что, так и не сделал до сих пор? Ладно, сейчас, что-нибудь сооружу
...
Рейтинг: 0 / 0
06.08.2011, 20:05
    #37383643
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
Пробуйте
...
Рейтинг: 0 / 0
06.08.2011, 21:04
    #37383671
nord-woolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
Код: plaintext
If Left(colMdlNames.Item(i),  4 ) <> "Form" And Left(colMdlNames.Item(i),  6 ) <> "Report" Then
Проще проверить значение VBComponents(n).Type до.
Не?
:)
...
Рейтинг: 0 / 0
06.08.2011, 21:20
    #37383679
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
nord-woolfПроще проверить значение VBComponents(n).Type до.
Не?
:)
Красиво. Даже и не подумал о таком решении.
...
Рейтинг: 0 / 0
07.08.2011, 02:05
    #37383837
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
mds_world, Очередной раз БОЛЬШОЕ СПАСИБО !!!
...
Рейтинг: 0 / 0
25.08.2011, 21:48
    #37412519
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
nord-woolf,

В продолжение темы
Что имелось ввиду
авторIf Left(colMdlNames.Item(i), 4) <> "Form" And Left(colMdlNames.Item(i), 6) <> "Report" Then
Проще проверить значение VBComponents(n).Type до.
Не?
:)

Куда и как это писать????
...
Рейтинг: 0 / 0
25.08.2011, 23:15
    #37412577
nord-woolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
Alekx...Куда и как это писать????

Я обычно пишу в текст процедуры модуля
легкими нажатиями пальцев на клавиши клавиатуры.
...
Рейтинг: 0 / 0
25.08.2011, 23:28
    #37412594
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
nord-woolf, ))) Да я тоже так делаю, но помоготе разобраться
Куда это писать VBComponents(n).Type
...
Рейтинг: 0 / 0
25.08.2011, 23:30
    #37412599
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
nord-woolf,

Alekx, было сказано
авторПроще проверить значение VBComponents(n).Type до

Вот я и хочу узнать как это сделать
...
Рейтинг: 0 / 0
26.08.2011, 19:55
    #37414210
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
nord-woolf, подскажите пжл что вы имели ввиду.

авторПроще проверить значение VBComponents(n).Type до
...
Рейтинг: 0 / 0
26.08.2011, 20:31
    #37414241
nord-woolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
Ну как-то так можно попробовать для начала:
...
Рейтинг: 0 / 0
27.08.2011, 00:37
    #37414400
Alekx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
nord-woolf,

большое спасибо, а можете подсказать код, который бы через Debug.Print strProcName просто вывел все имена функий, процедур которые находятся в модулях (без форм и отчётов) проэкта
...
Рейтинг: 0 / 0
27.08.2011, 01:03
    #37414410
nord-woolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
Легко:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Public Sub PrintProcedures()
    Dim i As Integer, j As Integer
    
    With New clsModules
        If .IsComplete Then
            For i =  1  To .StandartModules.Count
                For j =  1  To .StandartModules(i).Procedures.Count
                    With .StandartModules(i)
                        Debug.Print .Name, .Procedures(j)
                    End With
                Next j
            Next
        End If
    End With
End Sub
Модули классов взять из предыдущего прицепа.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
14.09.2016, 22:31
    #39309336
час58
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в списке отобразить все имена моих функций???
nord-woolf,

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


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