Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
spbetta Участник со стажем
Вступление в Клуб: 19.11.2012
|
Пт Апр 26, 2013 09:24  Ограничение вводимых значений |
|
Полезность: Нет оценки
|
Добрый день.
Необходимо ограничить поле ввода 'Интернациональное наименование'
в Организациях, при заведении новых.
Делаю в расширении операции Добавить (в проверке) след.образом:
gcn_LENGTH varchar (5);
begin
&BASE$SETVARS;
&BASE$VALIDATE;
&BASE$GETVARS;
-- просто вставляет команду на VBS
if P_INFO = 'P#I_NAME' then
[CSMD].Command(V_VB, 'Text21.MaxLength = ' || [PAYER_NAME].[LIB].gcn_LENGTH);
elsif length(gcn_LENGTH) > ::[PAYER_NAME].[LIB].gcn_Length then
stdio.put_line_buf('Сформированное наименование превышает '||::[PAYER_NAME].[LIB].gcn_Length||' символов.');
end if;
end;
При компиляции ошибок не происходит, но при добавлении новой организации никакого ограничения для поля "Интернациональное наименование" нет. (МАКСИМУМ 28 СИМВОЛОВ ДОЛЖНО БЫТЬ). |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Пт Апр 26, 2013 09:54   |
|
Полезность: Нет оценки
|
Вот такой строчки в расширении более чем достаточно:
Код: |
begin
&BASE$SETVARS;
&BASE$EXECUTE;
if length(P#I_NAME) > 5 then pragma error('Иностр. наимен. не может быть больше 5'); end if;
end;
|
|
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Пт Апр 26, 2013 09:56   |
|
Полезность: Нет оценки
|
На P#I_NAME на форме стоит CheckValidate=True ?
Сервер -Клиент ?
Зачем вообще в Проверке писать, почему не в Клиент-скрипте ?
MsgBox покрасивше stdio.put_line_buf будет... |
|
 |
Graffity666 Участник
Вступление в Клуб: 13.11.2012
|
Пт Апр 26, 2013 09:58  Re: Ограничение вводимых значений |
|
Полезность: Нет оценки
|
spbetta пишет: | Добрый день.
Необходимо ограничить поле ввода 'Интернациональное наименование'
в Организациях, при заведении новых.
Делаю в расширении операции Добавить (в проверке) след.образом:
gcn_LENGTH varchar (5);
begin
&BASE$SETVARS;
&BASE$VALIDATE;
&BASE$GETVARS;
-- просто вставляет команду на VBS
if P_INFO = 'P#I_NAME' then
[CSMD].Command(V_VB, 'Text21.MaxLength = ' || [PAYER_NAME].[LIB].gcn_LENGTH);
elsif length(gcn_LENGTH) > ::[PAYER_NAME].[LIB].gcn_Length then
stdio.put_line_buf('Сформированное наименование превышает '||::[PAYER_NAME].[LIB].gcn_Length||' символов.');
end if;
end;
При компиляции ошибок не происходит, но при добавлении новой организации никакого ограничения для поля "Интернациональное наименование" нет. (МАКСИМУМ 28 СИМВОЛОВ ДОЛЖНО БЫТЬ). |
Как-то слишком сложно, для такой простой задачи.
Чем не устраивает
Код: | if length(P#I_NAME) > ::[PAYER_NAME].[LIB].gcn_Length then
pragma error(''Сформированное наименование превышает '||::[PAYER_NAME].[LIB].gcn_Length||' символов.');
end if; |
в конце блока Код: | if P_MASSAGE = 'VALIDATE' then... | ? |
|
 |
spbetta Участник со стажем
Вступление в Клуб: 19.11.2012
|
Пт Апр 26, 2013 10:24  спасибо |
|
Полезность: Нет оценки
|
Спасибо большое всем. Строчка
if length(P#I_NAME) > 5 then pragma error('Иностр. наимен. не может быть больше 5'); end if;
очень помогла.
А каким образом можно исключить внесение кавычек в поле Интер.наименование? |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Пт Апр 26, 2013 11:18  Re: спасибо |
|
Полезность: Нет оценки
|
spbetta пишет: | Спасибо большое всем. Строчка
if length(P#I_NAME) > 5 then pragma error('Иностр. наимен. не может быть больше 5'); end if;
очень помогла.
А каким образом можно исключить внесение кавычек в поле Интер.наименование? |
при сохранении вырезайте, а при подсчете длинны наименования не учитывайте.
Пример:
Код: | if length(replace(P#I_NAME, '"')) > 5 then
pragma error('Иностр. наимен. не может быть больше 5');
end if; |
_________________ всегда есть как минимум 2 выхода |
|
 |
|