Параметры форм

Параметры форм создаются элементами управления. Если несколько элементов имеют одинаковое имя и передают значения (как, например, может быть с элементами управления CHECKBOX), они все будут доступны через тег <#P> и, возможно, другие теги. При этом значения будут разделены между собой запятой и пробелом. Таким образом, полученный список может использоваться в SQL конструкции

..IN(:LISTPAR1)

..IN (1, 2, ..N)..

Как быть, если Вы хотите передать из нескольких элементов управления значения, но не разделять их запятой и пробелом? Для этого нужно поставить символ "+" в конце значения:

<INPUT TYPE=HIDDEN NAME=VALUE1 VALUE="F:\src\+">

<INPUT TYPE=HIDDEN NAME=VALUE1 VALUE="mytext.txt">

В результате тег <#P name=VaLuE1> вернет:

F:\src\mytext.txt

Если нужно поставить знак плюс в конце строки, поставьте перед плюсом знак "\":

a+b+c\+  -> a+b+c+

При этом, если в форме будет присуствовать другой элемент с тем же именем, конкатенация параметров будет производиться как список, разделенный запятой с пробелом.

Если параметры в списке будут представлять собой не слова, а целые предложения, каждый элемент НЕ будет заключаться в одиночные кавычки:

'1 параметр', 2, '3,  4', 'Конец'  - не так!

Проверка на то, является ли параметр строкой и, соответственно, нуждается в кавычках, не делается. Это повышает требования к аккуратности написания sql выражений и созданию параметров- Вы должны делать это сами. Зато отключение возможности такой проверки  позволяет Вам написать примерно такой код:

..value="1" ... value="2, 3, 4" тогда результат слияния будет:

1, 2, 3, 4

Если включить (только при перекомпиляции) возможность такого закавычивания, то получилось бы:

1, '2, 3, 4'

Если параметр затем передается в sql выражение, то в sql выражении проверяется, есть ли одиночная или двойная кавычка непосредственно перед употреблением параметра. Если есть, то кавычки не ставятся, а если они есть- то они удаляются. Если нет, то тогда предложение закавычивается, а одиночное слово или число - нет. Поэтому для строковых параметров ставьте кавычки в sql предложениях.