1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Быстрый отбор и помещение документво в папку

Тема в разделе "Lotus - Программирование", создана пользователем Sayonara, 31 янв 2006.

Статус темы:
Закрыта.
  1. Sayonara

    Sayonara Гость

    Репутация:
    0
    Я тут почитал форумы и мне понравилась идея, о отправки найденных доков в папку, чтобы пользователь уже имел возможность работать с необходимой ему информацию. Нов от проблемма для 1 дня (это 500 записей в среднем), этот метод работает 2 минуты!!! А иногда нужно сортировать 2-х месячные логи..., это порядка нескольких часов, и абсалютно не приемлемо.... :)
    Люди, кто может посаветовать, более оптимальный код сортировки?

    Код:
    Sub Click(Source As Button)
    Dim wks As New NotesUIWorkspace
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim db As NotesDatabase
    Dim txt As String
    
    
    Set db = wks.CurrentDatabase.Database
    
    
    Set dc=db.AllDocuments
    Set doc=dc.GetFirstDocument
    
    While Not doc Is Nothing
    
    txt = doc.FullName(0)
    
              If Instr(txt,"\Ролики\Анонсы\") > 0 Then
    
           If Instr (txt,"\Ролики\Анонсы\некоммерческие") > 0 Then
     
           Else
    Call doc.PutInFolder("Анонсы",True)	
           End If
    
    End If
    
    If Instr(txt,"Рекламные") > 0 Then
    
    Call doc.PutInFolder("реклама",True)	
    End If
    
    If Instr(txt,"Сегодня в эфире") > 0 Then
    
    Call doc.PutInFolder("Коммерческие",True)	
    
    End If
     
    Set doc=dc.GetNextDocument(doc)	
    Wend
    
    Msgbox("Сортировка закончена")
    End Sub
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Попробуй использовать методы notesDatabase.Search или notesDatabase.FTSearch (или, лучше, notesView.FTSearch), а не просматривать каждый документ в цикле. А потом сделаешь notesDocumentCollection.PutAllInFolder. Будет гораздо быстрее.
     
  3. Sayonara

    Sayonara Гость

    Репутация:
    0
    <!--QuoteBegin-Medevic+31:01:2006, 15:11 -->
    <span class="vbquote">(Medevic @ 31:01:2006, 15:11 )</span><!--QuoteEBegin-->Попробуй использовать методы notesDatabase.Search или notesDatabase.FTSearch (или, лучше, notesView.FTSearch), а не просматривать каждый документ в цикле. А потом сделаешь notesDocumentCollection.PutAllInFolder. Будет гораздо быстрее.
    [snapback]29950" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Пробывал... вот, что у меня получилось.....
    Код:
    Set view = db.GetView("LogView")
    
    j = view.FTSearch( "Рекламные", 0 )
    Set doc = view.GetFirstDocument()
    
    While Not(doc Is Nothing)
     Call doc.PutInFolder( "реклама", True )
     Set doc = view.GetNextDocument(doc)
    Wend
    
    j = view.FTSearch( "Сегодня в эфире", 0 )
    Set doc = view.GetFirstDocument()
    
    While Not(doc Is Nothing)
     Call doc.PutInFolder( "Коммерческие", True )
     Set doc = view.GetNextDocument(doc)
    Wend
    
    j = view.FTSearch( "Новый поворот", 0 )
    Set doc = view.GetFirstDocument()
    
    While Not(doc Is Nothing)
     Call doc.PutInFolder( "Коммерческие", True )
     Set doc = view.GetNextDocument(doc)
    Wend
    Но работает, на 5 секунд быстрее, тоесть для одного дня 1-ый способ 1 мин.50 сек, а во 2-ом способе 1 мин. 45 сек...... тоже не приемлимо....
    Хотя может я неправильно написал код.... :-\
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Репутация:
    0
    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Дааа. :D
    Не проще ли примеры в хелпе глянуть по этим методам ?
     
  5. Domino6

    Domino6 Гость

    Репутация:
    0
    Кладив папку не поштучно а коллециями

    метод Putallinfolder от коллекции документов
    Код:
    	Dim ses As New NotesSession
    Dim db As NotesDatabase
    Set db = ses.CurentDatabase
    Dim scol As NotesDocumentCollection
    Dim qS List As String
    ' Показатель имя папки значение полнотекстовый запрос согласно синтаксису FT Search
    qs("Папка 1")="Полнотекстовый запрос"
    qs("Реклама")="Рекламные"
    qs("Цены товар")="цена | price | produce | товар"
    
    Forall q In qs
    scol = db.FTSearch( q, 0 )
    If scol.Count>0 Then
    Call scol.PutInAllFolder( Listag(q), True )
    End If
    End Forall
    в qs дописываеш нужное колличество элементов
    в виде qs("Папка 1")="Полнотекстовый запрос"
     
  6. Sayonara

    Sayonara Гость

    Репутация:
    0
    <!--QuoteBegin-Medevic+1:02:2006, 15:15 -->
    <span class="vbquote">(Medevic @ 1:02:2006, 15:15 )</span><!--QuoteEBegin-->Дааа. :D
    Не проще ли примеры в хелпе глянуть по этим методам ?
    [snapback]29991" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Это и был пример из хелпа..... :(
     
  7. Sayonara

    Sayonara Гость

    Репутация:
    0
    Domino6, спасибо супер!!! Очень помогло и нетолько в этой проблеме.... :(
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей