При составлении выражения, включающего в себя несколько полей, можно не получить желаемого результата из-за того, что результирующее выражение будет содержать незначащие (лидирующие и завершающие) пробелы. Для их исключения нужно сначала удалить незначащие пробелы из значений полей, а затем объединить поля в одно выражение. Допустим, вы хотите отобразить адресную строку, содержащую названия города, области и почтовый код. Если указать поля в строке друг за другом, то между значениями этих полей могут появиться незначащие пробелы.
Обрезание полей и выражения для объединения
Вы можете применить обрезание и объединение к выражениям, содержащим поля с переменной длиной значения. Сначала из каждого такого поля функцией ALLTRIM( ) надо удалить незначащие пробелы, при этом знаки пунктуации и значащие пробелы заключаются в кавычки (" "), а затем объединить поля с помощью знака плюс (+).
Длина значения в поле может быть переменной, как в поле с названием города, или постоянной, как в поле с почтовым кодом. В следующем примере показано, что функция ALLTRIM( ) применяется только к полям с переменной длиной значения:
Копировать код | |
---|---|
ALLTRIM(city) + ", " + region + " " + postal_code |
Замечание: |
---|
Обратите внимание на то, что в кавычки заключена не только запятая, но и пробел. |
Для лучшего понимания смотрите пример отчета Invoice.frx в папке Visual FoxPro ...\Samples\Solution\Reports.
Выражения для быстрого обрезания и объединения
Если знаки пунктуации не нужны, то можно применить быстрое обрезание и объединение, поставив запятую (,) между выражениями. При этом из значения выражения, стоящего перед запятой, будут удалены незначащие пробелы .
Замечание: |
---|
Если значение, полученное после удаления незначащих пробелов, имеет длину больше нуля, то его можно перенести на новую строку, поставив вслед за выражением точку с запятой (;). |
В следующем примере показано применение выражений для обрезания и объединения для нескольких полей в почтовом адресе:
Копировать код | |
---|---|
contact_name; address; city, region, postal_code |