Счетчик

Тема в разделе "Lotus - Программирование", создана пользователем 1KIA, 3 ноя 2010.

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

    1KIA Гость

    Помогите
    Есть поле, в которое вносится номер документа, номер имеет вид: счетчик/пост. число/вносится вручную

    Взяла пример кода с сайта
    Код (Text):
    If Source.IsNewDoc Then
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim item As NotesItem
    Set db = session.CurrentDatabase
    Set view = db.GetView( "number" )
    Set doc = view.GetFirstDocument
    If Not(doc Is Nothing) Then
    Set item = doc.GetFirstItem( "nm" )
    doc.nm= Int(item.Text )+1
    Call doc.save(True,True)
    End If

    End If

    Sub Postopen(Source As Notesuidocument)
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim item As NotesItem
    Set db = session.CurrentDatabase
    Set view = db.GetView( "number" )
    Set doc = view.GetFirstDocument

    If (Not(doc Is Nothing) And (source.IsNewDoc) ) Then
    Set item = doc.GetFirstItem( "nm" )
    Call Source.FieldSetText("Number",item.Text & "/111/")
    End If
    Вопрос как можно сделать, чтобы при QuerySave выполнялось обновление поля Number, только первой ее части. Т.к. если док-т был открыт у двоих, то он будет иметь одинаковый номер

    Помогите
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Лучше для номера использовать числовое поле, а не текстовое, иначе в представлении "поедет" сортировка:
    1
    11
    2
    3
    Можно хранить числовую часть номера в поле типа Number, а то, что после слэша — в текстовом.
     
  3. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Про порядковые номера только недавно вопрос был.
    http://codeby.net/forum/threads/38603.html

    Я бы предложил, если возможно, то проставлять номера ночью агентом.
     
  4. 1KIA

    1KIA Гость

    ночью нельзя...
    а на счет того, что поле номер - этож ничего не даст....
    Я не могу разобраться, как после того как открыл док-т, заполнил все, закрываешь и в этот момент, чтобы проверило db.GetView( "number" ) на то что первая часть поля с номером уже существует и при этом выдало про это сообщение и изменило первую часть на тот номер, который не существует еще
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Если номер имеет формат Number/Suffix, при этом Number должен быть уникальным для всех Suffix, хранение в дополнительном поле Number позволяет легко проверить его неуникальность. Получение нового значения также становится тривиальной задачей — представление с первым отсортированным в обратном порядке столбцом Number, берём первую запись + 1. Про проблему сортировки строк указывал.
    Проверку наличия номера также легко решить:
    Код (LotusScript):
    If Not view.GetFirstEntryByKey(Number) Is Nothing Then 'пашёл нафик
    Если номер вводится вручную, можно либо на форме нарисовать два поля [Number]/[Suffix], либо сделать скрытое вычисляемое поле с формулой
    @TextToNumber(@Left(ПолеНомера; "/"));
     
  6. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    1KIA

    имхо, моя идея состоит вот в чем:

    имеем профильний док которий содержит в поле номер (но поле должно обязательно бить нумбер!!!!)
    дальше

    когда сохраняем документ ТО привязиваем "номер" к униду! в етом случае вам не будут дублироватся номера документов.

    вот вам силка очень полезная инфа в ней

    http://www.ibm.com/developerworks/ru/library/digestsearch/
     
  7. nnikishi

    nnikishi Гость

    Хранить последний номер в профильном документе очень опасно. Профильные доки кешируются, и не сразу могут быть отданы серверу. Более того нередки случаи, когда профильные доки уничтожались при банальной репликации на локал. И вообще профильные доки хороши для хранения настроек отдельного пользователя, все остальное лучше хранить в живом документе.

    Если формат уникального поля не важен, можно делать брать правые хотя бы четыре буквы юнида документа + текущая дата в какой нибудь вариации. В таком случае лотус сам будет хендлить уникальность.
     
Загрузка...
Похожие Темы - Счетчик
  1. xbeetle
    Ответов:
    0
    Просмотров:
    463
  2. Jkx
    Ответов:
    0
    Просмотров:
    747
  3. Sabin
    Ответов:
    0
    Просмотров:
    1.553
  4. NicNsk
    Ответов:
    1
    Просмотров:
    1.052
  5. slovo
    Ответов:
    3
    Просмотров:
    1.652
Статус темы:
Закрыта.

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