Пресловутое разделение данных поля на несколько полей

Akella80
Дата: 25.02.2008 20:33:52
Привет. Отсмотрел форум (тем ~ 30), так или иначе не нашел решения проблемы..
Необходимо разделить поле типа "Адрес" на составляющие элементы, причем происходить это должно не в запросе или VB, а на банальной форме т.е. базовая запись (поле "адрес" выглядит как "xxxxxxxxxxx ОБЛ,xxxxxxxxxxxxxxx Р-Н,,xxxxxxxxxxxxxxxx РП,xxxxxxxxxxxxxxx УЛ,дом,корпус,квартира" при этом улица, дом, корпус и квартира могут отсутствовать, оставив память о себе в виде запятых) на той же форме располагаются соответствующие поля (необходимо для последующей передачи разделенных данных в следующую форму). Просьба ответить кому невнапряг http://www.sql.ru/forum/images/biggrin.gif
Karfaqen
Дата: 25.02.2008 21:23:13
Если вам в итоге надо получить в разных полях формы отдельные составляющие адреса, который в таблице хранится в одном поле, то как вариант - пишете свою функцию, в которой разбиваете исходную строку по запятым на куски и возвращаете один из этих кусков. В функцию передаете значение исходного поля таблицы и порядковый номер куска, который надо вернуть.

А в форме, в своих адресных полях в свойстве данные пишете вызов этой функции в виде:
=GetAddressPart([ПолеАдреса],1) 'чтобы получить первую часть, т.е. ОБЛ
=GetAddressPart([ПолеАдреса],2) 'чтобы получить вторую часть, т.е. Р-Н
=GetAddressPart([ПолеАдреса],3) 'чтобы получить третью часть, т.е. РП
... и т.д.
Разбивать исходную строку на куски можно функцией Split.
Akella80
Дата: 26.02.2008 17:34:27
Спасибо, попробую. Нет ли более простого способа например через определение "данных" поля указанием выражения отбирающего собственно данные и работает ли функция split в формах?
Karfaqen
Дата: 26.02.2008 17:47:21
Akella80
Нет ли более простого способа например через определение "данных" поля указанием выражения отбирающего собственно данные
Во-первых, это оно и есть: =GetAddressPart([ПолеАдреса],1) - это и есть "выражение отбирающее собственно данные". Во-вторых, конечно же вместо него вы можете написать любое свое выражение, которое сделает то же самое (используя функции разбора строки). Не думаю, правда, что такое выражение будет проще по виду и по сути того, что я предлагаю.