Дубликати документов

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

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

    Max_from_UA Гость

    Как запретить вносить в БД уже внесенных людей, тоесть чтобы не было одинаковых людей (с ФИО) в разных записях.
     
  2. Гость

    Можно делать проверку в QuerySave на совпадение.
    Я делала для своих доков так, хотя думаю, что можно сделать это поизящней.
    Кто решал подобную задачу? Дайте плз. совет или критику по алгоритму.

    Код (Text):
    list1:=@DbLookup("":"NoCache";"":"";"(Spr po UNN+PS)";@Text(CompanyUNN)+@Text(CompanyPC);2);
    @If(@IsError(list1) | list1="";@Return("");@Success);

    @If(((@Elements(list1)>1) & Visible!=0 & !@IsNewDoc);
    @Do(@Prompt([Ok];"Ошибка";"Организация с таким УНН и р/сч уже существует.");
    FIELD CompanyName:="");
    "");
    @If(((@Elements(list1)=1) & Visible!=0 & @IsNewDoc);
    @Do(@Prompt([Ok];"Ошибка";"Организация с таким УНН и р/сч уже существует.");
    FIELD CompanyName:="");
    "")
     
  3. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Код можно повесить в Validation Formula.
    В @DbLookUp возвращать UNID документа и сравнивать с текущим (это чтобы не проверял поле в текущем документе).
     
  4. Peter123

    Peter123 Гость

    Скорее всего говорю глупость, прошу не пинать. А если сделать поле fio ключевым?
     
  5. Гость

    Для: Peter123
    А как это сделать в Lotus? :)
     
  6. Max_from_UA

    Max_from_UA Гость

    В лотусе насколько мне известо понятия ключевого поля не существует, а в оркле пожалуйста, там этого хватает.
     
  7. Peter123

    Peter123 Гость

    Я вообще-то с мускулом работаю, но по идее все, что работает в MySQL должно и в Lotus работать. В мускуле в любом редакторе таблиц можно выбрать поле и поставить галочку на Unique. Или запросом типа ALTER TABLE some_table ADD UNIQUE fio;
    У этого решения тоже минусов достаточно. Может быть ограничено количество ключей в таблице, надо смотреть документацию. Для этого поля будет создана индексная таблица (прирост в размере базы, зато поиск по фамилии будет супер ;-) ). И ошибки будет генерировать уже сама БД, может дополнительно придется их перехватывать. А вообще , надо пробовать...
     
  8. Гость

    Для: Peter123
    Лотус нереляционная база, так что такой способ не подходит.
    Только если писать что-то вроде этого самостоятельно.
     
  9. Peter123

    Peter123 Гость

    Пока писал, Max ответил. Ну раз нет ключевых полей, значит я не в тему... :)
     
  10. Max_from_UA

    Max_from_UA Гость

    А Peter123 вы что-то знаете о взаимодействии лотуса с мускулом.
    Можноли его использовать при составлении нотес-приложений
     
  11. Domino6

    Domino6 Гость

    <!--QuoteBegin-Max_from_UA+28:03:2006, 13:32 -->
    <span class="vbquote">(Max_from_UA @ 28:03:2006, 13:32 )</span><!--QuoteEBegin-->Можноли его использовать при составлении нотес-приложений
    [snapback]32637" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    ODBC
    LEI
     
  12. Max_from_UA

    Max_from_UA Гость

    Все еще про дубликаты. Наклёпал такую муть и поместил её в агент, а он не пашет. Что еще нужно указать при составлении аганта находящего дубликаты?

    Код (Text):
    IDcode := @DbLookup("";"";"OsobistiByNpp"; @PickList( [Custom]:[Single]; "":""; "Osobisti"; ""; "";1);"Identifikation");

    @If(@IsError(IDcode); @Success; @Implode (IDCode; "")=@Text(@DocumentUniqueID); @Success; @Failure("Идентификационный код в БД уже существует ..."));
    Он типа работает, только делает не то, что надо, а еменно: выделяет все документы и только.
     
  13. Domino6

    Domino6 Гость

    А что эта муть должна делать?
     
  14. Гость

    А почему в агент???
     
  15. Max_from_UA

    Max_from_UA Гость

    Находить дубликаты идинтификационных кодов в БД?
     
  16. Max_from_UA

    Max_from_UA Гость

    По писал ответ на вопрос Домино6. Вы задали свой?
    ЮЛИЯ:
    А что конкретно мешает мне это сделать.
    Я создал общий агент FindingCopy, который должен выполняться вручную при нажатии
    кнопки мз панели дейстий в нужном мне представлении.
    Тоесть я создал кнопку для которой прописал формулу:
    Код (Text):
    @Command([ToolsRunMacro]; "FindingCopy")
    На вопрос какие доки агент обрабативает, я дал ответ:
    Все документы в представлении.
    Вроде все.
    Что еще нужно для правильной, тобиш корректной работы ?
     
  17. Max_from_UA

    Max_from_UA Гость

    Osobisti - это моё представление, а OsobistiByNpp - псевдоним этого представления, отсортированного по первому столбцу.
     
  18. Гость

    :) Доки не могут иметь одинаковое значение уникального ключа @DocumentUniqueID.

    Но вообще по коду хочу сказать, что необходимость выбирать кучу раз Osobisti Пиклистом заставит пользователя быть крайне раздражительным. :rolleyes:
    + @Failure в таких агентах кажется не работет.

    Почему бы не сделать проще?
    Сформировать вид, где категоризировать доки по полю, которое хотелось бы видеть уникальным и там следить, чтобы количество доков не превышало 1 в каждой категории.

    А еще лучше сделать агент на LS, где поиском выбирались бы все доки по форме и анализировались по полю, которое хотелось бы сделать уникальным для базы.
     
  19. Max_from_UA

    Max_from_UA Гость

    Действительно, @Failure в таких агентах точно не работет.
    Я конечно извеняюсь за довольно глупие вопросы, а что подразумевается под
    ?
    И как мне быть с людьми без кода. Как для них поставить в соответствие уникальный номер.
     
  20. Гость

    Уникальный номер документы в базе ставиться автоматически. Почитай в хелпе инфу по UNIDs.

    По категориям опять же в хелпе почитай Categories.
    Или открой любой вид и в первом столбще на второй вкладке поставь переключателем "Категория" и посмотри результат.
    На картинке пример категории по первому столбцу.
     

    Вложения:

Загрузка...
Статус темы:
Закрыта.

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