powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Слияние полей в Access
6 сообщений из 6, страница 1 из 1
Слияние полей в Access
    #32245580
st-tatiana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста!!!
Задача: нужно слить несколько полей из столбца в один через запятую.
Я нашла статью Юрия Шермана о слиянии полей (работает, все замечательно), но проблема в том, что:
1. У меня база "Телефонный справочник", содержащая около 30000 записей. Сама база изначально построена неправильно (моя задача выжать из нее все, что можно).
2. Есть таблицы: "Адресная база" и "телефоны". В каждой из этих таблиц содержится куча разных полей (название, город, улица, дом, офис, виды деятельности и т.д., но телефоны отдельно: связь между таблицами - индетификатор).
3. Мне надо создать отчет:
1) Город (из "адресной базы")
2) Название фирмы и Виды деятельности (перечисление через запятую) (из "адресной базы")
3) Все телефоны (из таблицы "телефоны")
4. "Неправильность" базы заключается в том, что виды деятельности не подчиненная таблица, а дублировались записи; например:
Фирма: Икс, ООО
Город: Москва
Улица: Иванова
Дом: 6
Вид деятельности: продажа автомобилей
Следом еще одна запись - новая:
Фирма и все данные те же самые, но вид деятельности другой: ремонт автомобилей.
5. Как сделать из этой базы следующий отчет:
Икс, ООО (продажа автомобилей, ремонт автомобилей)
тел: 111-11-11
факс: 111-11-10
Умоляю, помогите!!!
...
Рейтинг: 0 / 0
Слияние полей в Access
    #32245588
Фотография Svetlana_613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
по-моему если попроще (не ручками), то можно сделать запрос, в котором будут только основные поля по предприятию, сгуппировать их, т.о. получится просто спикок предприятий, делаешь этот запрос основным, и выводишь нужные поля в заголовке отчета или формы, ниже делаешь подчиненную форму или отчет и по идентификатору подставляешь нужные подчиненные записи из основной таблицы
...
Рейтинг: 0 / 0
Слияние полей в Access
    #32245606
st-tatiana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если подставляется индефикатор (связка между таблицами), то в поле, где я хочу, чтобы виды деятельности были через запятую, начинается "ерунда". Вот сколько у фирмы телефонов (от 1 и более 5 телефонов) сколько раз запрос выводит значения видов деятельности.
Пример:
вместо: Икс, ООО (продажа автомобилей, ремонт автомобилей)
запрос выдает: Икс, ООО (продажа автомобилей, продажа автомобилей)
ниже следующая строка: Икс, ООО (ремонт автомобилей, ремонт автомобилей)
Как с этим бороться?
Без индефикатора никак нельзя (иначе телефоны не подставляются)...
...
Рейтинг: 0 / 0
Слияние полей в Access
    #32245646
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос выдает: Икс, ООО (продажа автомобилей, продажа автомобилей)
ниже следующая строка: Икс, ООО (ремонт автомобилей, ремонт автомобилей)
Как с этим бороться?


Сделай еще одну группировку...

Сама база изначально построена неправильно

И тебе кажется, что ты делаешь правильно? Мне кажется, логичнее эту базу разбить на несколько таблиц:

Фирма:
IdФирмы/НазваниеФирмы/ДругаяИнформация

Вид деятельности:
IdВидаДеятельности/НаименованиеВидаДеятельности

Виды деятельности по фирмам:
IdФирмы/IdВидаДеятельности

Телефоны:
IdФирмы/Строка-НомерТелефона

и т.д.

Насторить связи - и, при минимуме размеров, с такой базой можно делать все, что угодно.
...
Рейтинг: 0 / 0
Слияние полей в Access
    #32245648
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По первой части виноват, невнимательно прочитал. С ходу подсказать не могу, статью не читал :( Посмотри поиском по форуму, здесь несколько раз обсуждалось подобные проблемы. Делать надо, мне кажется, через VBA, запросами такую петрушку, по-моему, не соберешь.
Раз уж начал, примерно набросаю функцию:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Public Function GetWorkFirm(IdFirm as Long) as String

  Dim rs as DAO.Recordset
  dim s as string

  if not IdFirm> 0  then exit function

  Set rs = currentdb.openrecordset( "Select * From FirmList Where IdFirm="  & IdFirm")

  do until rs.EOF
    s = s & rs![WorkFirm]
  loop
  
  GetWorkFirm = s

End Function


Это при условии, что ты пользуешься DAO. :)
...
Рейтинг: 0 / 0
Слияние полей в Access
    #32246558
st-tatiana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, попробую.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Слияние полей в Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]