|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.10.2012, 17:43 | #1 |
Пользователь
Регистрация: 13.03.2012
Сообщений: 21
|
Объединение полей
Информация о членах семьи находится в Таблице «ТблЧленыСемьи», которая состоит из полей:
1. Id_Ch 2. S_Ch (степень родства) 3. Fam_Ch (фамилия члена семьи) 4. Im_Ch (имя ЧС) 5. Ot_Ch (отчество ЧС) 6. DRog_Ch (дата рождения ЧС) 7. Fam (фамилия главы семьи) Т.е 1. 1 (число) 2. сын (текст) 3. Иванов (текст) 4. Иван (текст) 5. Иванович (текст) 6. 03.06.1988 (дата) 7. Иванов Строка 2 1. 2 2. дочь 3. Иванова 4. Ирина 5. Ивановна 6. 23.05.1989 7. Иванов И т.д. В главной форме «ДанныеЛС» подчиненная форма «ФрмПДЧ_ЧленыСемьи» связаны по фамилии главы семьи (поле Fam) Все дело в том, что часто эти данные требуется показать в другом формате – то есть в одном поле одной строкой. Для этого табличной форме «ФрмДанныеЛС» и отчете «ОтчДанныеЛС» эти данные нужно отобразить в одном поле «Члены семьи» примерно в таком формате: сын – Иванов Иван Иванович, 03.06.1988 г.; дочь – Иванова Ирина Ивановна, 23.05.1989 г. И т.д. Сложность заключается в том, что объединить нужно не просто несколько полей в одно к примеру Fam & “ “ & Im & “ “ &Ot, а несколько полей в нескольких строках – в одно поле. Помогите, пожалуйста. |
12.10.2012, 23:31 | #2 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 388
|
Если данные должны выводиться в одно поле, то подчиненная форма здесь не нужна. Создаем свободное поле, данные для него "=СоставСемьи([fam])", если fam поле в этой форме содержащее фамилию главы семьи. В модуле прописываем функцию:
Код:
на неконкретные вопросы даю неконкретные ответы ...
|
13.10.2012, 02:51 | #3 |
Пользователь
Регистрация: 13.03.2012
Сообщений: 21
|
Спасибо. В примитивном варианте однофамильцев нет! Это конечно ужасно, но в начале пути в Access мы их отличали так: Иванов Иванов* Иванов** Конечно теперь для Fam есть уникальный код Id_Fam. Как я понял в Вашем модуле Fam можно заменить на Id_Fam?
К вечеру опробую Ваш вариант. Очень важно, чтобы все получилось. Ведь азы Access учат разбивать информацию на как можно меньшие части. Но вот часто нужно объединять эти данные в одном поле, например перечислить состав семьи, периоды работы, награды, учебные заведения которые окончил и т.п. А для этого в каждом таком случае нужно писать отдельный модуль, аналогичный Вашему? Последний раз редактировалось АлИван; 13.10.2012 в 03:06. |
13.10.2012, 03:12 | #4 |
Пользователь
Регистрация: 13.03.2012
Сообщений: 21
|
Если ничего не напутал, то для Id_Fam функция будет такой:
Создаем свободное поле, данные для него "=СоставСемьи([Id_Fam])", если fam поле в этой форме содержащее фамилию главы семьи. В модуле прописываем функцию: Код: Function СоставСемьи(Id_Fam As String) As String Dim R As Recordset Set R = CurrentDb.OpenRecordset("select * from [ТблЧленыСемьи] WHERE [Id_Fam]='" & Id_Fam & "'") While Not R.EOF СоставСемьи = СоставСемьи & R.Fields("S_Ch") & " - " & R.Fields("Fam_Ch") & " " & _ R.Fields("Im_Ch") & " " & R.Fields("Ot_Ch") & ", " & R.Fields("DRog_Ch") & " г.; " R.MoveNext Wend Set R = Nothing End Function |
13.10.2012, 03:45 | #5 |
Пользователь
Регистрация: 13.03.2012
Сообщений: 21
|
Ура! С Вашим модулем по Fam все получилось. А вот по Id_Fam выдает ошибку в строке
Set R = CurrentDb.OpenRecordset("select * from [ТблЧленыСемьи] WHERE [Id_Fam]='" & Id_Fam & "'") помечет ее желтым цветом. Что-то напортачил? |
13.10.2012, 10:04 | #6 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 388
|
Код:
на неконкретные вопросы даю неконкретные ответы ...
|
13.10.2012, 14:19 | #7 |
Пользователь
Регистрация: 13.03.2012
Сообщений: 21
|
Function СоставСемьи(Id_fam As Long) As String
Dim R As Recordset Set R = CurrentDb.OpenRecordset("select * from [ТблЧленыСемьи] WHERE [id_fam]=" & id_fam) While Not R.EOF СоставСемьи = СоставСемьи & R.Fields("S_Ch") & " - " & R.Fields("Fam_Ch") & " " & _ R.Fields("Im_Ch") & " " & R.Fields("Ot_Ch") & ", " & R.Fields("DRog_Ch") & " г.; " R.MoveNext Wend Set R = Nothing End Function Id_Fam действительно число, но функция в этом варианте не работает, в поле пишет #ошибка |
13.10.2012, 14:22 | #8 |
Пользователь
Регистрация: 13.03.2012
Сообщений: 21
|
У-у-у-у... Поле в форме ведь надо тоже исправить! =СоставСемьи([Id_fam])!
Вот теперь все получилось!! Огромное Вам спасибо! |
13.10.2012, 14:24 | #9 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 388
|
удаленно ...
на неконкретные вопросы даю неконкретные ответы ...
|
13.10.2012, 22:51 | #10 | |
Форумчанин
Регистрация: 20.05.2012
Сообщений: 311
|
Цитата:
1. У вас используется справочник отношений родства (свойства)? 2. Если есть - как он организован, как производится ввод данных? 3. Структура вашей базы ещё подлежит корректированию? |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объединение текстовых значений из полей таблицы (Access 2010) | Mjaso | Microsoft Office Access | 7 | 28.04.2012 21:18 |
Объединение полей. | Lena220 | Microsoft Office Access | 3 | 06.12.2010 21:45 |
При удалении записей значения полей с type:=Autoincrement (т.е+) в оставшихся полей не изменяются | kenta | БД в Delphi | 2 | 29.10.2009 08:28 |
Объединение 2-х полей таблицы | SNUPY | SQL, базы данных | 2 | 04.10.2009 22:53 |
Объеденение полей запроса в для отображения нескольких полей в одном списке | mrCreator | Microsoft Office Access | 3 | 08.08.2009 00:53 |