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

  • Автор темы Max_from_UA
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Max_from_UA

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

Guest

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

Код:
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:="");
"")
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#3
Код можно повесить в Validation Formula.
В @DbLookUp возвращать UNID документа и сравнивать с текущим (это чтобы не проверял поле в текущем документе).
 
P

Peter123

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

Max_from_UA

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

Peter123

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

Guest

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

Peter123

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

Max_from_UA

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

Domino6

#11
<!--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
 
M

Max_from_UA

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

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

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

Max_from_UA

#15
Находить дубликаты идинтификационных кодов в БД?
 
M

Max_from_UA

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

Max_from_UA

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

Guest

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

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

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

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

Max_from_UA

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

Guest

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

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

Вложения

Статус
Закрыто для дальнейших ответов.