Поиск вьюшек без индекса

wowa

Well-Known Member
01.02.2007
845
0
#1
Здравствуйте,

Помогите решить задачку.
Есть 5 баз по одному и тому же шаблону. В этом шаблоне, внимание, 1120 вьюшек.
Посмотрел, в самой крупной базе 66% вьюшек не имеют индекса, значит скорее всего они просто никому не надо и было бы неплохо их удалить.
Но что делать если в одной базе вьюшка не нада, а во второй нужна.

Решил сделать xls отчет, что если в пяти базах индексы пусты, то будем удалять вьюшку.
Как бы это оптимизировать чтобы меньше заполнять руками?

Допустим список всех вьюшек я выгружу спокойно, а как выгрузить есть ли индекс?
Не хочется 1120*5 ячеек заполнять вручную смотрев таблицу из Администратора.

Спасибо.
 

wowa

Well-Known Member
01.02.2007
845
0
#3
Стоит задача в наведении порядка после горе-разработчиков.
Сначала было решено начать с вьюшек.
Первый шаг удалить вьюшки без индексов, а это 66%.
А потом и остальные просмотреть и посечь многих, все-таки легче просматривать 300 вьюшек, нежели 1100
 
да и при будущей разработке найти нужную вьюшку будет полегче , нежели в этом мусоре
 

rinsk

Well-Known Member
Lotus team
12.11.2009
895
84
Казань
#4
ну плодовитые программеры однако)))
Можно сделать так - написать скрипт, который выгрузит в DXL весь дизайн без вьюх,
потом в цикле берем имена вьюх и ищем их упоминание в этом DXL - поймем. есть ли программное обращение к ним. если нет - грохаем.
останется по требованию юзверей добавлять вьюхи, которым им стало так не хватать в шаблон)
 

alexas1

Well-Known Member
Lotus team
10.04.2014
687
238
#5
ну плодовитые программеры однако)))
:) Не эт не плодовитые. Эт ленивые.
Просили изменить логику - писали под неё вьюшку, а старые не трогали - "вдруг понадобится"
Известный эффект отсутствия комментариев о зависимостях дизайнэлементов.
 

wowa

Well-Known Member
01.02.2007
845
0
#7
ну плодовитые программеры однако)))
Можно сделать так - написать скрипт, который выгрузит в DXL весь дизайн без вьюх,
потом в цикле берем имена вьюх и ищем их упоминание в этом DXL - поймем. есть ли программное обращение к ним. если нет - грохаем.
останется по требованию юзверей добавлять вьюхи, которым им стало так не хватать в шаблон)
о , а вот это идея мне очень нравится. Но ее все равно надо будет сравнивать с наличием индексов. В самой базе очень много различной навигации.
Хотя.....хотя .......Программное обращение же включает и аутлайны где и будут эти вьюшки если они включены в навигацию.

Появился сразу же вопрос как выгрузить в DXL все кроме вьюшек.... ох давно я не пользовался DXL....

Хотя вот что-то нашел, пример как выгрузить только агенты:
Код:
Sub Initialize
 
	'This agent is designed to export the specified design elements to .dxl (.xml in Notes).
 
Dim session As New NotesSession
Dim db As NotesDatabase
Dim nc As NotesNoteCollection
Dim stream As NotesStream
Dim exporter As NotesDXLExporter
Const filename = "c:\filename.xml" 'Change as required
 
Set db = session.CurrentDatabase
 
Set stream = session.CreateStream
Call stream.Open(filename)
Call stream.Truncate
 
Set nc = db.CreateNoteCollection(False)
nc.SelectAgents=True 'Change as required
Call nc.BuildCollection
 
Set exporter = session.CreateDXLExporter(nc, stream)
Call exporter.Process
End Sub
Я так понимаю в моем случае надо SelectAllNotes(), а потом SelectViews = False
Правильно?

Если это прокатит, то мы примерно и удалим как минимум эти 66% вьюшек и особо нам эти индексы и не надо рассматривать.

Подскажите, где может быть промах?
 

wowa

Well-Known Member
01.02.2007
845
0
#11
Подскажите, вот я выгрузил в файлик весь дизайн кроме вьюшек .
Как более правильно теперь проверить, встречается ли где-то вьюшка с именем, например, "ViewName_1" ?

Код:
Dim stream As NotesStream
Set stream = session.CreateStream
path = "c:\dxl\"
filename = Left(db.FileName, Len(db.FileName) - 3) & "dxl"
filename = path$ & filename$
If Not stream.Open(filename$) Then
MessageBox "Cannot open " & filename$,, "Error"
Exit Sub
End If
Call stream.Truncate
 
REM Create note collection
Dim nc As NotesNoteCollection
Set nc = db.CreateNoteCollection(False)
Call nc.SelectAllNotes(True)
nc.Selectviews = False
Call nc.BuildCollection
 
REM Export note collection as DXL
Dim exporter As NotesDXLExporter
Set exporter = session.CreateDXLExporter(nc, stream)
Call exporter.Process
 

alexas1

Well-Known Member
Lotus team
10.04.2014
687
238
#12
Ты же текст в файл получил? Да хоть в нотепаде сёрчь запузырь.
 

wowa

Well-Known Member
01.02.2007
845
0
#13
надо в LS, 1100 вьюшек в нотепаде это не дело

Код:
views = db.Views
ForAll v In views
 
??????
 
End ForAll
 

wowa

Well-Known Member
01.02.2007
845
0
#15
Код:
text$ = notesStream.ReadText( [ oneLine& ] , [ eol& ] )
а потом like
Спасибо.
Лайком никогда не пользовался, думал Instr какой-н. Но боюсь что будут какие-н ограничения по кол-ву символов. У меня размер файла 25.3мб

Скажите,

Код:
Dim vText As Variant
 
vText = stream.ReadText()
 
ForAll v In views
 
 
'Is Used?
  If vText Like "*" & v.Name & "*" Then
  aRange( iLineCounter, iColumn ) = "Yes" 
  Else
  aRange( iLineCounter, iColumn ) = "No"
  End If
 
End ForAll
Что-то мне подсказывает что я Like так никогда и не научусь пользоваться.
Правильно ли он задан?
Тут такая ситуация, что если у нас есть вьюшка "View_1" и "View_11". А используется только вторая то данный Like покажет что и первая используется. Поэтому может надо
Код:
vText Like {*"} & v.Name & {"*}
Спасибо.
 

Shandrik

Well-Known Member
Lotus team
30.12.2010
268
26
Град Обреченный
#16
ну плодовитые программеры однако)))
Можно сделать так - написать скрипт, который выгрузит в DXL весь дизайн без вьюх,
потом в цикле берем имена вьюх и ищем их упоминание в этом DXL - поймем. есть ли программное обращение к ним. если нет - грохаем.
Имя вьюхи в коде запросто может быть составным, особенно учитывая упомянутую ViewName_1.
Например, дробление по последнему символу UNID-а документа получим 16 вьюшек, и ни одна из них не будет явно указана в коде.
 

wowa

Well-Known Member
01.02.2007
845
0
#17
Ну ,я думаю, что если и будет где-то неявно задана, то при наличии вьюх таких как "View_1", "View_2"...... и т.д. Думаю что в данном случае перед удалением можно будет проверить вручную такие варианты.

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

wowa

Well-Known Member
01.02.2007
845
0
#18
А нафига? Не используются и хрен с ними - они тогда ни на что не влияют (кроме эстетики). А "лишних" 1120 доков (а вьюшки, это просто спец доки) в нотусе - ничто.
Вот я тоже думал что для эстетики... Но как оказалось, после любого изменения документа(создание, редактирование) происходит перестроение всех связанных вьюшек. Т.е. каждую минуту может перестраиваться более сотни вьюшек что забивает сервак.... Как-то так.

Так же подсказали что если индекс = 0 - это не означает что она не используется, если колонки не отсортированы, то и индексы не строятся. Как-то так...... Т.е. к индексам особо не привяжешься