Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
2 / 2 / 0
Регистрация: 22.12.2018
Сообщений: 44

Создание поля с множеством значений в одном поле т.е. преобразование столбца или строки с множеством значений в одном

16.01.2019, 11:31. Показов 5546. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день господа программисты.

дернул меня черт создать базу данных в Access до сегодняшнего дня вроде все получилось.

принялся сейчас делать отчет и отбирать для него значения через запросы
вот и понадобилось в одну строку т.е. поле объединить данные (которые могут увеличится по кол-во записей в поле через запятую)

как это сделать не могу понять т.к. не программист поэтому выставляю скриншоты
а там будем разбирается как сделать и куда вставить процедуру VBA т.к. скорее всего она и понадобится и как ее в базе сохранить.
Миниатюры
Создание поля с множеством значений в одном поле т.е. преобразование столбца или строки с множеством значений в одном   Создание поля с множеством значений в одном поле т.е. преобразование столбца или строки с множеством значений в одном   Создание поля с множеством значений в одном поле т.е. преобразование столбца или строки с множеством значений в одном  

Создание поля с множеством значений в одном поле т.е. преобразование столбца или строки с множеством значений в одном  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.01.2019, 11:31
Ответы с готовыми решениями:

Ограничение значений для столбца множеством значений из другого столбца другой таблицы
Добрый. Не могу нагуглить, допустим есть 2 таблицы: t1 и t2 В t1, допустим, кроме всего прочего есть поле: `name` VARCHAR (250) UNICUE...

Условие отбора запроса из одного поля формы, с множеством значений
Всем доброго времени суток! Помогите, пожалуйста, разобраться. Как передать условие отбора в запрос из формы где данные в одной строке? ...

Работа со множеством IP-адресов на одном сервере
Прошу помочь разобраться в следующих вопросах: Если я арендую дедик или VDS, мне провайдер выделяет несколько IP адресов (можно сколько...

51
 Аватар для VinniPuh
9132 / 6156 / 593
Регистрация: 27.03.2013
Сообщений: 20,013
16.01.2019, 11:59
Так у вас всего одна запись, сделайте как положено, пока мало данных.
Вручную займет максимум минуту.
0
2 / 2 / 0
Регистрация: 22.12.2018
Сообщений: 44
16.01.2019, 17:30  [ТС]
Данных много в других запросах, а здесь находится запрос, где по номеру отфильтровывается от фильтровывается единственная колонка, которую необходимо поместить в отчет в виде строки (там по вертикали в зависимости от номера выводятся номера методик расчета ) через запятую каждое значение столбца

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

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

Мне надо получить одно поле с перечислением отобранных методик через запятую.
Типа вот этого
Использование материалы для расчета: ПНД Ф 13.1.76-15, ПЛЦК.413411.001 МВИ, М-01В/2011 (ФР.1.31.2011.09973)

Добавлено через 2 минуты
вот так примерно так что вы имеете виду под сделайте как положено (у меня не получается)
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,941
Записей в блоге: 4
16.01.2019, 17:45
Цитата Сообщение от Oleg6719 Посмотреть сообщение
Мне надо получить одно поле с перечислением отобранных методик через запятую. Типа вот этого
было бы нагляднее, если бы вы выложили пример базы с таблицей данных(хотя бы 3-5 типичных ситуации)

Добавлено через 5 минут
Цитата Сообщение от Oleg6719 Посмотреть сообщение
попытался через трансформ сделать перекрестный запрос
вряд ли это приемлемо --я думаю, что у каждой позиции разный комплект составляющих типа, причем не всегда в стандартной сортировке
метода 11,2,11
метода 2 2,11,999,1

удобнее все же
таб1--методы(код1, наименование....)
таб2 --методы_состав(код2,код1, код составляющей, ранг сортировки, автор,...)
0
2 / 2 / 0
Регистрация: 22.12.2018
Сообщений: 44
16.01.2019, 18:05  [ТС]
значения идут из одного запроса и хранятся в справочнике, запрос их собирает и фильтрует на основе данных № и я с запроса выдел столбец один и номер т.е. запрос всегда имеет данные с основного запроса. выделенный столбец и надо собрать в строку через (, ) кол-во данных будет манятся и нужен от чтобы включить в отчет это поле и в нём отображалось ПНД Ф 13.1.76-15, ПЛЦК.413411.001 МВИ, М-01В/2011 (ФР.1.31.2011.09973) в таком виде. и поле будет само расширятся в зависимости от кол-во значений в нем. ваши метод один и два показывают правильно но это надо сделать с текстом

Добавлено через 7 минут
я перекопал много инфы на эту тему сделать можно но необходимо использовать VBA т.к. я не программист а только пытаюсь понять как создать функцию для моего запроса которая объединит данные (http://hiprog.com/index.php?op... iew&id=334) как это использовать? куда что писать? как сохранить в базе данных?

Добавлено через 1 минуту
Могет я чего не так понимаю, но можно же так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Public Function UnionStr2() As Variant
Dim rst As DAO.Recordset
Dim s$
On Error GoTo UnionStr2_Err
    
    s = "SELECT TOP 3 * FROM t3 WHERE (Отправлено Is Null) ORDER BY Код DESC;"
    'А в запросе видно четыре! Тогда так:
    's = "SELECT TOP 4 * FROM t3 WHERE (Отправлено Is Null) ORDER BY Код DESC;"
    Set rst = CurrentDb.OpenRecordset(s, dbOpenSnapshot)  'Только просмотр
    
'Перебор всех записей в наборе
    With rst
        Do Until .EOF = True 'Цикл до конца таблицы
            'Debug.Print " - " & !pole
            UnionStr2 = UnionStr2 & !pole & "; "
            .MoveNext
        Loop
    End With
 
UnionStr2_End:
    On Error Resume Next
    rst.Close
    Set rst = Nothing
    Exit Function
    
UnionStr2_Err:
     MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description, vbCritical
    Resume UnionStr2_End
 
End Function
Вернёт: "3334444444; 1112322222; 5656566544; " или "3334444444; 1112322222; 5656566544; 5656565656; " (вот это как использовать)
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
17.01.2019, 08:02
Я тоже не понял, конкатенация это или нет
0
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,672
17.01.2019, 08:15
1. Ну вот так ваш код ни когда не вернет
"3334444444; 1112322222; 5656566544; 5656565656; "
т.к. набор записей ограничен тремя строками (т.е. должно быть не более трех значений)
2. есть более хитрый способ собрать значения таблицы в одну строку (ячейку, переменную) который основан на методе getstring библиотеки adodb вы же используете библиотеку dao
3. как использовать?
код который вы предоставили это функция которую можно вызвать практически из любого места
вот только эта функция не требует параметров соответственно она будет собирать все записи которые вернет запрос рекордсета

Добавлено через 2 минуты
Select top 3
вот это top 3 и говорит о том что из всех полученных данных берутся только три первых строки (записи)
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
17.01.2019, 08:17
То есть всё-таки опять изъезженная конкатенация.
Тогда к первоисточнику:
http://hiprog.com/index.php?op... iew&id=334
1
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,941
Записей в блоге: 4
17.01.2019, 08:28
Цитата Сообщение от Oleg6719 Посмотреть сообщение
Могет я чего не так понимаю, но можно же так:
этот вариант может не пройти, если суммарная длина составляющих более 255 символов

Добавлено через 5 минут
Цитата Сообщение от Oleg6719 Посмотреть сообщение
принялся сейчас делать отчет и отбирать для него значения через запросы
вот и понадобилось в одну строку т.е. поле объединить данные
поэтому делала бы через рабочую таблицу (+update) или прямо в отчете
0
2 / 2 / 0
Регистрация: 22.12.2018
Сообщений: 44
17.01.2019, 11:57  [ТС]
просто обычным способом после перекрестного запроса я получаю поле с объединёнными данными для отчета (если можно столбец преобразовать в отчете в строку то как) но при уменьшении или увеличении методик это не подходит. данная операция необходима только для отчета запрос с другого запроса берет значения и убирает повторы, и этот столбик необходимо в виде строки через запятую отобразить в отчете. вопрос как каким способом т.к. значения будут увеличивается или уменьшатся.
Миниатюры
Создание поля с множеством значений в одном поле т.е. преобразование столбца или строки с множеством значений в одном  
0
2 / 2 / 0
Регистрация: 22.12.2018
Сообщений: 44
17.01.2019, 11:59  [ТС]
вот еще
Миниатюры
Создание поля с множеством значений в одном поле т.е. преобразование столбца или строки с множеством значений в одном   Создание поля с множеством значений в одном поле т.е. преобразование столбца или строки с множеством значений в одном  
0
2 / 2 / 0
Регистрация: 22.12.2018
Сообщений: 44
17.01.2019, 12:07  [ТС]
в отчете не обходимо получить вот так, только значений будет разное кол во от 1-20 грубо говоря как собирать все значения строки или столбца [y]&", "&[t0]&", "&[yt] **** вот так от одной записи до бесконечности
Миниатюры
Создание поля с множеством значений в одном поле т.е. преобразование столбца или строки с множеством значений в одном  
0
2 / 2 / 0
Регистрация: 22.12.2018
Сообщений: 44
17.01.2019, 13:03  [ТС]
пример который надо изменить

[М-01В/2011 (ФР_1_31_2011_09973)] & ", " & [М-13 (ФР_1_31_2011_11262)] & ", " & [М-25-2016 (ФР_1_31_2017_25719)] & ", " & [МИ-4215-020-56591409-2011 (ФР_1_31_2011_11325)] & ", " & [ПЛЦК_413411_001 МВИ] & ", " & [ПНД Ф 13_1_42-2003 (ФР_1_31_2007_03826)] & ", " & [ПНД Ф 13_1_76-15] & ", " & [ФР_1_31_2001_00384] & ", " & [ФР_1_31_2009_05509] & ", " & [ФР_1_31_2009_05510]

как сделать чтобы;
методики ((функция)&", "& (сборка всей строки независимо от кол-во столбцов и наименования))
в одно поле через запятую
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
17.01.2019, 14:19
Цитата Сообщение от Oleg6719 Посмотреть сообщение
как сделать чтобы;
методики ((функция)&", "& (сборка всей строки независимо от кол-во столбцов и наименования))
в одно поле через запятую
строки? записи что-ли? то есть все поля должны быть через запятую в одном поле? дата, текст, число - неважно? что это за винегрет?
0
126 / 96 / 33
Регистрация: 28.02.2017
Сообщений: 478
17.01.2019, 14:24
Цитата Сообщение от Oleg6719 Посмотреть сообщение
как сделать чтобы;
Цитата Сообщение от shanemac51 Посмотреть сообщение
было бы нагляднее, если бы вы выложили пример базы с таблицей данных(хотя бы 3-5 типичных ситуации)
В конце концов, свою базу выложи!
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,941
Записей в блоге: 4
17.01.2019, 14:28
Цитата Сообщение от Oleg6719 Посмотреть сообщение
пример который надо изменить

[М-01В/2011 (ФР_1_31_2011_09973)] & ", " & [М-13 (ФР_1_31_2011_11262)] & ", " & [М-25-2016 (ФР_1_31_2017_25719)] & ", " & [МИ-4215-020-56591409-2011 (ФР_1_31_2011_11325)] & ", " & [ПЛЦК_413411_001 МВИ] & ", " & [ПНД Ф 13_1_42-2003 (ФР_1_31_2007_03826)] & ", " & [ПНД Ф 13_1_76-15] & ", " & [ФР_1_31_2001_00384] & ", " & [ФР_1_31_2009_05509] & ", " & [ФР_1_31_2009_05510]

как сделать чтобы;
методики ((функция)&", "& (сборка всей строки независимо от кол-во столбцов и наименования))
в одно поле через запятую
по крайней мере здесь у вас 390 символов, а может и больше ---функция не сработает
[М-01В/2011 (ФР_1_31_2011_09973)]
& ", " & [М-13 (ФР_1_31_2011_11262)]
& ", " & [М-25-2016 (ФР_1_31_2017_25719)]
& ", " & [МИ-4215-020-56591409-2011 (ФР_1_31_2011_11325)]
& ", " & [ПЛЦК_413411_001 МВИ]
& ", " & [ПНД Ф 13_1_42-2003 (ФР_1_31_2007_03826)]
& ", " & [ПНД Ф 13_1_76-15]
& ", " & [ФР_1_31_2001_00384]
& ", " & [ФР_1_31_2009_05509]
& ", " & [ФР_1_31_2009_05510]
1
2 / 2 / 0
Регистрация: 22.12.2018
Сообщений: 44
17.01.2019, 14:38  [ТС]
ЭТО НЕ ВЕНИГРЕТ это перечень методик на основании которых производились расчеты в протокол и в шапке (заголовке) указывается их общий перечень, в столбик не подходит занимает много места надо в строку в отчете указать. на скриншотах два варианта в столбик или в строку и значения увеличиваются или уменьшаются неважно что в столбике или строке и сколько значений они должны собраться в отчете в одно поле в строку через запятую. База на сервере полного доступа нет удается вытащить некоторые данные только для отчета и построить свои запросы хранения данных происходит на сервере я их беру для составления отчета таблицы только для чтения. могу только запросы выложить без данных но это получится с слаться некуда будет поэтому и скриншоты.
Цитата Сообщение от alvk Посмотреть сообщение
строки? записи что-ли? то есть все поля должны быть через запятую в одном поле? дата, текст, число - неважно? что это за винегрет?

Использование материалы для расчета: ПНД Ф 13.1.76-15, ПЛЦК.413411.001 МВИ, М-01В/2011 (ФР.1.31.2011.09973)
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
17.01.2019, 14:45
Ещё раз. Это поля? Это поля одной записи?
Или это всё в одном поле таблицы??
0
2 / 2 / 0
Регистрация: 22.12.2018
Сообщений: 44
17.01.2019, 14:54  [ТС]
полей может быть много но в отчете нужно одно поле со всеми записями для отчета или в отчете скриншоты выше
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
17.01.2019, 15:40
Лучший ответ Сообщение было отмечено Oleg6719 как решение

Решение

Oleg6719,

Я правильно понимаю, что Вы хотите содержимое всех полей,
полученных перекрестным запросом, объединить в одном поле отчета?
И в перекрестном отчете у Вас одна запись?

Тогда сделайте так:

- в отчете заведите поле со свойством Расширение = Да;
- пусть это поле называется Поле;
- поле [Поле] должно быть свободным, то есть не иметь источника данных;
- источником записей отчета сделайте Ваш перекрестный запрос;
- в модуле отчета создайте такую процедуру обработки события Открытие:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Report_Open(Cancel As Integer)
 Dim S As String, _
     i As Byte
 With CurrentDb.OpenRecordset("Имя перекрестного запроса")
  S = "=[" & .Fields(0).Name & "]"
  For i = 1 To .Fields.Count - 1
   S = S & " & [" & .Fields(i).Name & "]"
  Next
 End With
 Поле.ControlSource = S
End Sub
"Имя перекрестного запроса" замените на свое.
Все.
Поле отчета [Поле] будет таким, как Вам надо, с текстом любой длины, хоть 1000 символов, хоть 6000.

Поскольку источником записей всего большого отчета будет не перекрестный запрос, а что-то другое,
то этот отчет с одним полем [Поле] сделайте вложенным в основной отчет,
вложенному отчету так же, как и полю [Поле], задайте свойство Расширение = Да.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.01.2019, 15:40
Помогаю со студенческими работами здесь

Несколько значений в одном поле
Для курсовой работы надо создать сложную форму в access-е так, чтобы в одном значении поля формы было несколько значений из таблицы ...

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

Несколько значений в одном поле
Имеется таблица в которой в одном из полей содержится сразу несколько значений (ключи полей от другой таблицы). Существуют ли запрос что бы...

Перебор значений в одном поле
У меня есть выборка значений одно поле там значения 2134, 3425, 2345,8678,3453... и тд .. их около 3 к.. причем это не в табилце это всего...

Константа с множеством значений
Здравствуйте. Требуется задать набор констант : REGID = 0x00000000 — 0xFFFFFFF9 DIGID = 0xFFFFFFFA STRID = 0xFFFFFFFB EMPTY...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru