Проблемы при работе с Folders

Автор Тема: Проблемы при работе с Folders  (Прочитано 17774 раз)

Mabuta

  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
    • E-mail
Проблемы при работе с Folders
« : 26 Апрель 2011, 13:08:12 »
Добрый день уважаемы знатоки!

Может пишу не в том разделе, если чего перенесу.

У меня такая проблема:

У меня есть view с документами, мне нужно выбирать документы по условию, ну допустим зарплата < 5000 грн и помещать этот документ в созданый заранее Folder, при этом удалять этот документ из view.

Пока я выбираю документы таким образом:

Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Call collection.PutAllInFolder( "Відповідні вакансії резюме" )
End Sub

Подскажите пожалуйста в каком хотя бы направлении идти, или ссылку на источник, ОЧЕНЬ нужна помощь!!!

Вот мыло garnett@bigmir.net

Заранее спасибо!!!

Alla Makshanova

  • Участник
  • **
  • Сообщений: 43
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #1 : 26 Апрель 2011, 13:39:23 »
Попробуйте.
Поочередно проверяем каждый документ из коллекции, начиная с первого.  Поле "Заработная плата" документа назовем Pay, поменяйте его имя на Ваше

   Dim doc As NotesDocument
   Dim doc1 As NotesDocument

   Set doc = collection.Getfirstdocument()
       While Not(doc Is Nothing)
                Set doc1 = collection.GetNextDocument(doc)


                 If doc.Pay(0)<5000 Then    'проверяем размер зарплаты
                       Call doc.PutInFolder("имя папки",True)
                   End If
   Set doc = doc1   'переходим к следующему документу
   Wend
В дизайнере откройте, пожалуйста, Help>Help Contents и наберите PutInFolder method. Там же будут ссылки на примеры

Mabuta

  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #2 : 26 Апрель 2011, 13:55:17 »
Спасибо за ответ
Нл на этой строчке скрипт вылетает Set doc = collection.Getfirstdocument(), так как не может получить паремтр Getfirstdocument по сути.
А в хелпе по PutInFolder ничего про удаление нету, я уже смотрел

Alla Makshanova

  • Участник
  • **
  • Сообщений: 43
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #3 : 26 Апрель 2011, 14:08:04 »
Я прошу прощения, отпечатка.
Надо написать без скобочек

Set doc = collection.Getfirstdocument

В Хелп наберите
NotesDocumentCollection class

Там есть список методов, как их правильно использовать

Mabuta

  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #4 : 26 Апрель 2011, 14:22:51 »
Я прошу прошения, а можно использовать вот это

Set collection = db.AllDocuments или такого как AllDocuments нету?

И еще если выдаеться ошибка  "Type mismatch" при обращении к строке 

If doc.Zarplata(0) < 4000 Then

чтобы это могло значить?

Alla Makshanova

  • Участник
  • **
  • Сообщений: 43
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #5 : 26 Апрель 2011, 14:53:35 »
AllDocuments есть, использовать можно. В Хелп можно набрать NotesDatabase class, он там перечислен. Ошибка Type mismatch возникает по разным причинам:
1. Попытка оперировать переменными с конфликтующими типами данных.
2. Попытка присвоить значение переменной, которая имеет другой тип данных, если LotusScript не может преобразовать его автоматически.
3. Вы передаете значение как аргумент, который имеет по-разному объявленные типы данных.
4. Вы используете строку как начальное значение.

А поле Zarplata имеет какой тип данных? Текстовый или числовой?

Alla Makshanova

  • Участник
  • **
  • Сообщений: 43
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #6 : 26 Апрель 2011, 15:06:02 »
А чтобы документы не отображались в определенном представлении, можно создать на форме какое-нибудь поле-флажок, менять его значение в цикле проверки уровня заработной платы (например, менять значение с 0 на 1), а в формуле выборки нужного представления указать Select (Form="Форма") & (Поле!=1)

Mabuta

  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #7 : 26 Апрель 2011, 15:26:50 »
Спасибо, сечас посмотрю!!!

Zarplata у меня числовой, но я менял на текстовый все равно пишет ту же ошибку.

Ставил Dim Zarplata As Integer, все равно таже ошибка

А на счет удаления с представления, это мне нужно чтоб при повторной выборке по заплате те документы которые мы уже отобрали в папку не участвовали в следущей проверке.

Zarplata мне нужна чтоб сравнивать ее с другой зарплатой (с другого документа).
Просто хочется посмотреть как заработает предложеный Вами скрипт, тогда на основе уже будется делаться все остальное

Заранее спасибо



Alla Makshanova

  • Участник
  • **
  • Сообщений: 43
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #8 : 26 Апрель 2011, 15:46:15 »
Гм, поле зарплата должно быть числовым. Т.к. это поле документа, то оно рассматривается как его свойство, объявлять его Integer в коде бессмысленно.
Тогда воспользуйтесь, например, перед перед циклом If
   MsgBox ("Зарплата = " & doc.Zarplata(0))
Что он выведет? Зарплата ведь не целое число? Скорее всего проблема с типами.
А чтобы документы, отобранные в папку, не участвовали в дальнейших сравнениях, используйте переменную NotesView, т.е. представление, для которого поменяли формулу выборки.

Dim view As NotesView
Set view = db.GetView( "Представление без документов в папке" )
« Последнее редактирование: 26 Апрель 2011, 17:36:02 от Anonymous »

Mabuta

  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #9 : 26 Апрель 2011, 15:53:17 »
Оно мне выдало:

Просто False

Alla Makshanova

  • Участник
  • **
  • Сообщений: 43
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #10 : 26 Апрель 2011, 16:08:03 »
А поле типа Number? Или в нем выбраны какие-то дополнительные опции, установлено значение по умолчанию? Если значения в нем имеют формат 0,00? Проблемы с полем

Alla Makshanova

  • Участник
  • **
  • Сообщений: 43
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #11 : 26 Апрель 2011, 16:21:46 »
Формат поля какой (вторая вкладка в свойствах поля)? Decimal?

Mabuta

  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #12 : 26 Апрель 2011, 17:16:48 »
Все проверил, да все так как ты и сказал, убрал нули после запитой и все остальное, но все равно ошибка False, вот

Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Set db = session.CurrentDatabase
Set collection = db.AllDocuments
Dim doc As NotesDocument
Dim doc1 As NotesDocument
Set doc = collection.GetFirstDocument
While Not(doc Is Nothing)
Set doc1 = collection.GetNextDocument(doc)
Msgbox (Зарплата =  "& doc.Zarplata(0)")
If doc.Zarplata < 5000 Then    'проверяем размер зарплаты
Call doc.PutInFolder("Відповідні вакансії резюме",True)
End If
Set doc = doc1   'переходим к следующему документу
Wend
End Sub

Mabuta

  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #13 : 26 Апрель 2011, 17:24:40 »
Скорей всего именно

doc не присваиваеться правильно, может где-то надо указать название этого документа?

Alla Makshanova

  • Участник
  • **
  • Сообщений: 43
    • Просмотр профиля
    • E-mail
Re: Проблемы при работе с Folders
« Ответ #14 : 26 Апрель 2011, 17:33:29 »
А, так ты в кавычки не то слово взял. Надо

Msgbox ("Зарплата =  " & doc.Zarplata(0))

А у тебя
Msgbox (Зарплата =  "& doc.Zarplata(0)")

Вот он и понять не может, что это за строковая переменная

Проверь, что он выведет

А по поводу присвоения doc попробуй тогда со скобочками

Set doc = collection.GetFirstDocument()

как в примере  из Хелп

Sub Initialize
  Dim session As New NotesSession
  Dim db As NotesDatabase
  Dim collection As NotesDocumentCollection
  Dim doc As NotesDocument
  Set db = session.CurrentDatabase
  Set collection = db.AllDocuments
  Set doc = collection.GetFirstDocument()
  While Not(doc Is Nothing) 
    If doc.HasEmbedded Then
      Call detachFiles( doc )
    End If
    Set doc = collection.GetNextDocument(doc)
  Wend
End Sub


Прогони пошагово. В Notes Client выбери Tools>Debug LotusScript, затем выполни агент.
« Последнее редактирование: 26 Апрель 2011, 17:41:32 от Anonymous »