Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/247: Рейтинг темы: голосов - 247, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 95
1

Удаление из вида

02.07.2009, 12:52. Показов 44714. Ответов 44
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть вопрос. Возможно ли удаление из вида, если документы в виде разбиты по категориям, необходимо удалять документы не выделяя их, а сразу всю категорию (то есть свернутую)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.07.2009, 12:52
Ответы с готовыми решениями:

Построить три вида фигуры. На месте вида спереди и вида слева совместить часть вида с частью разреза

Построить три вида фигуры. На месте вида спереди и вида слева совместить часть вида с частью разреза - AutoCAD
Меня уже совсем выносит. Правильно ли я делаю?.. Не могу представить нормально вид слева. Что делаю...

Удаление группы букв вида abcd
Здравствуйте. Задача звучит следующим образом: Даны натуральные число n, символы S1,...,Sn. Удалить...

Программное Удаление Личного Вида Для Пересоздания
Добрый день Всем ! Lotus 7.02 Проблема что в видах в которых пользователи смотрят свои...

44
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
02.07.2009, 18:14 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Omh
Ну и естественно, это будет работать, только если в виде одна категолрия smile.gif
ну если многоуровневая - то можно делать так
Пример для 3-х категорий. Поиск документов для удаления по первым двум категориям


Код
    Dim WS As New NotesUIWorkspace
Dim uiview As NotesUIView
Dim view As NotesView
Dim category(1) As Variant
Dim dc As NotesDocumentCollection
Dim Session As New NotesSession
Dim Db As NotesDatabase
Dim Doc As NotesDocument

Set DB = Session.CurrentDatabase
Set uiview = WS.CurrentView
Set Doc = db.GetDocumentByID( uiview.CaretNoteID )

category(0) = Doc.<название поля1>(0)
category(1) = Doc.<название поля2>(0)

Set View = DB.GetView( <Название вида> )
Set dc = view.GetAllDocumentsByKey( category, True)

Call dc.RemoveAll( True )

Call ws.ViewRefresh
где <название поля1>, <название поля2> - названия полей, по которым группируются документы
<Название вида> - вид с 2-мя первыми!!!! отсортированными полями <название поля1>, <название поля2>

Если надо удалить все документы по первой категории - то соответственно нужно только одно первое поле

исправил пару ошибочек

Ну или как сказал Omh - можно использовать db.Serach. тогда из моего примера нужно выкинуть

Код
category(0) = Doc.<название поля1>(0)
category(1) = Doc.<название поля2>(0)
а Set View = DB.GetView( <Название вида> ) заменить на db.Serach и искать все по тем же полям (См. выше)
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
02.07.2009, 19:20 22
GetAll...ByKey иногда взглюкивают (лечится перестройкой load updall -R <db> -T <view>)
но можно жить с
Get...ByKey
там пригодится Getentry
далее от текущей бежим проверяя indentlevel по энтрисам
TIA указал - как найти положение выделенной категории
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 95
05.07.2009, 11:24 23
извеняюсь, что задаю опять вопрос, но я не могу понять что здесь надо

Код
        Dim WS As New NotesUIWorkspace
Dim uiview As NotesUIView
Dim view As NotesView
Dim category As Variant
Dim dc As NotesDocumentCollection
Dim Session As New NotesSession
Dim Db As NotesDatabase
Dim Doc As NotesDocument
Set DB = Session.CurrentDatabase
Set uiview = WS.CurrentView
Set Doc = db.GetDocumentByID( uiview.CaretNoteID )
category = Doc.Name(0)
Name - поле в первой отсортированнойя колонке, но в ней выдает ошибку Object variable not set

не могу понять, теперь удаляется не вся категория с подкатегориями, а при выделении документа удаляется категория
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
05.07.2009, 12:03 24
Цитата Сообщение от I123321
Set Doc = db.GetDocumentByID( uiview.CaretNoteID )
category = Doc.Name(0)
в ней выдает ошибку Object variable not set
Прогресс налицо Освойте еще дебагер - и будет вам счастье.
В дебагере вы можете заметить, что uiview.CaretNoteID содержит нечто, явно не явлющееся NoteID документа. И там же вы обнаружите, что Doc имеет значением( адресует ) Nothyng.

Вы ходили по ссылке TIA на итертраст? Там лежит готовое решение по перебору документов в выбранной подкатегории.
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 95
05.07.2009, 13:22 25
Код
    Dim NUIWS As New NotesUIWorkspace
Dim NDC As NotesDocumentCollection
Dim NDB As NotesDatabase
Dim NVN As NotesViewNavigator
Dim ND As NotesDocument
Dim strCaretNoteID As String

Set NDB = NUIWS.CurrentDatabase.Database
Set NVN = NUIWS.CurrentView.View.CreateViewNavFromCategory(NUIWS.CurrentView.CaretCategory)
Set ND = NVN.GetFirst.Document
Set NDC = view.GetAllDocumentsByKey( ???????, True)
Call NDC.RemoveAll( True )
Call NUIWS.ViewRefresh
не могу понять что сюда Set NDC = view.GetAllDocumentsByKey( ???????, True)


или как мне удалить документы?

не получается собрать коллекцию и ее удалить ;)
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
05.07.2009, 13:23 26
I123321 , ты хелп читал?!
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 95
05.07.2009, 13:47 27
читал... читаю... но ничего не могу понять

мне просто очень надо, спешу, вот ничего уже и сообразить не могу...... может, если кто-то может, то помогите пожалуйста
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 95
05.07.2009, 15:58 28
пытаюсь сделать так, опять не то

Код
    Dim NUIWS As New NotesUIWorkspace
Dim NDC As NotesDocumentCollection
Dim NDB As NotesDatabase
Dim NVN As NotesViewNavigator
Dim ND As NotesDocument
Dim view As NotesView

Set NDB = NUIWS.CurrentDatabase.Database
Set NVN = NUIWS.CurrentView.View.CreateViewNavFromCategory(NUIWS.CurrentView.CaretCategory)
Set ND = NVN.GetFirst.Document
category = ND.Name(0)
Set NDC = view.GetAllDocumentsByKey( category, True)
Call NDC.RemoveAll( True )
Call NUIWS.ViewRefresh
помогите, если кто-то может
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
05.07.2009, 16:27 29
I123321, слушай, это достаточно простое задание!
Читай внимательно хелп! Почитай
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
05.07.2009, 17:27 30
Мне показалась задачка интересная. Поэтому вот решение.
Немного переделал код с интертраста. Вместо прохода навигатором по всему представлению, сделал переход к нужной категории сразу и рекурсивный обход внутри. Мне кажется, так гораздо быстрее будет. Также пришлось использовать пустую коллекцию.

Код
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim NUIWS As New NotesUIWorkspace
Dim NV As NotesView
Dim NVN As NotesViewNavigator
Dim NVE As NotesViewEntry
Dim strCaretCategory As String

Set db = session.CurrentDatabase
strCaretCategory = NUIWS.CurrentView.CaretCategory
Set NV = NUIWS.CurrentView.View

Set dc = db.Search({}, Nothyng, 0)
Dim ve As NotesViewEntry
Set NVN = NV.CreateViewNav()
Set NVE = NVN.GetPos(strCaretCategory, ".")

Call AddChilds(dc, nvn, nve)
Call dc.RemoveAll(True)
Call NUIWS.ViewRefresh()
End Sub

Sub AddChilds(dc As NotesDocumentCollection, nvn As NotesViewNavigator, nve As NotesViewEntry)
Dim ve As NotesViewEntry
Set ve = nvn.GetChild(nve)
While Not (ve Is Nothyng)
Messagebox(ve.ColumnValues(Ubound(ve.ColumnValues)))
If ve.IsDocument Then Call dc.AddDocument(ve.Document)
Call AddChilds(dc, nvn, ve)
Set ve = nvn.GetNextSibling(ve)
Wend
End Sub
Ответственности за потерю данных не несу и всё такое.
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
05.07.2009, 17:37 31
Цитата Сообщение от I123321
помогите, если кто-то может
Походу треба разжевать ( см. пример Сергей Шабалина ( serEJa Shabalin ) на интертрасте )
1. Добавьте в ваш категоризованный вид первую колонку с формулой @DocNumber. На последней закладке в свойствах колонки взведите галку "Hide Column"
2. Повесьте на кнопку код:

Код
Sub Click(Source As Button)
Dim NUIWS As New NotesUIWorkspace
Dim NV As NotesView
Dim NVN As NotesViewNavigator
Dim NVE As NotesViewEntry
Dim strCaretCategory As String
Dim blnContains As Boolean

blnContains = False
strCaretCategory = NUIWS.CurrentView.CaretCategory
Set NV = NUIWS.CurrentView.View
Set NVN = NV.CreateViewNav()
Set NVE = NVN.GetFirst
пустая коллекция:
Dim collection As NotesDocumentCollection
Set collection = NV.Parent.Search( "" , Nothyng , 0 )

Do While Not(NVE Is Nothyng)
If Instr(NVE.GetPosition("."), strCaretCategory)=1 Then
blnContains = True
добавляем документ в коллекцию:
If NVE.IsDocument Then
On Error 4469 Resume Next
Call collection.AddDocument( nve.Document )
End If
Elseif blnContains Then
Exit Do
End If
Set NVE = NVN.GetNext(NVE)
Loop
if collection.count > 0 then Call collection.RemoveAll( True )
End Sub
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 95
05.07.2009, 18:04 32
в этой строке Call AddChilds(dc, nvn, nve) что не определено
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
05.07.2009, 18:10 33
Что?

Скопируй код и вставь в новую кнопку. Всё должно работать.
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 95
05.07.2009, 18:11 34
Data not saved due to script error(s)
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
05.07.2009, 18:13 35
Процедура AddChilds описана ниже. Ты скопировал её в кнопку?
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 95
05.07.2009, 18:26 36
теперь еще лучше, только нажимаю на кнопку - выдает ошибку Лотуса и закрывается лотус

описана процедура ниже

теперь все сохраняется, только Лотус не работает

только нажимаю на кнопку - ЛОТУС ВЫРУБАЕТСЯ
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
06.07.2009, 09:17 37
Дебаггером посмотри в каком месте.
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 95
06.07.2009, 09:58 38
доходит сюда Set NVE = NVN.GetPos(strCaretCategory, ".") и выбрасывает отом из Лотуса
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
06.07.2009, 10:02 39
Интересно. Какая версия клиента?
Ты добавил первый столбец с формулой @DocNumber?
0
0 / 0 / 0
Регистрация: 29.06.2009
Сообщений: 95
06.07.2009, 10:07 40
да

версия 7
0
06.07.2009, 10:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2009, 10:07
Помогаю со студенческими работами здесь

Для праздничного чаепития необходимо купить n пирожных. В магазине продается всего два вида пирожных одного вида, причем пирожных одного вида осталось
Для праздничного чаепития необходимо купить n пирожных. В магазине продается всего два вида...

Как скопировать данные из одного вида таблицы в другою иного вида
Добрый день уважаемые гуру! Вопрос в следующем: есть необходимость скопировать данные из таблицы в...

Написать функцию которая по линейныму списку вида ( . a s w c b) строит сложный список вида (.) a) s) w) c) b)
Написать функцию которая по линейныму списку вида ( ... a s w c b) строит сложный список вида...

Написать функцию которая по линейныму списку вида (a d r g h .) строит сложный список вида (a (d (r (g (h (.)
Написать функцию которая по линейныму списку вида (a d r g h ...) строит сложный список вида (a (d...

Свод данных с ячеек одного вида таблиц в сводную таблицу другого вида
Добрый день! Помогите пожалуйста темному челу в VBA! Организации присылают мне таблицы одного вида...

Clojure Написать функцию которая по линейныму списку вида (1 2 3 4 5) строит сложный список вида(1) (2) (3) (4) (5)
Здравствуйте. Помогите написать функцию которая по линейныму списку вида (1 2 3 4 5) строит сложный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru