Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Собрать данные из неск.записей в одну строку / 11 сообщений из 11, страница 1 из 1
29.03.2016, 09:21
    #39202743
123_456_789
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собрать данные из неск.записей в одну строку
Запрос возвращает данные (строки):
ААА | БББ |
ВВВ | ААА |
БББ | ДДД |

Как собрать их в строку, типа: "ААА, БББ, ВВВ, ДДД" (т.е. ещё и исключить повторы)?
...
Рейтинг: 0 / 0
29.03.2016, 09:33
    #39202752
Собрать данные из неск.записей в одну строку
Открыть ADODB.Recordset на UNION запросе вида "SELECT Поле1 FROM Таблица UNION Поле2 FROM Таблица", получить строку методом GetString, указав ", " в качестве разделителя строк. Ну еще удалить лишний ", " в конце строки.
Можно и DAO.Recordset на том же запросе, но тогда строку нужно собирать в цикле по записям.
...
Рейтинг: 0 / 0
29.03.2016, 11:44
    #39203011
123_456_789
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собрать данные из неск.записей в одну строку
авторМожно и DAO.Recordset на том же запросе, но тогда строку нужно собирать в цикле по записям.
Т.е. в 2-х циклах (один - по записям, вложенный - по полям)?
И каждое полученное значение проверять на InStr в уже собранной строке?
...
Рейтинг: 0 / 0
29.03.2016, 13:41
    #39203164
Собрать данные из неск.записей в одну строку
123_456_789Т.е. в 2-х циклах (один - по записям, вложенный - по полям)?
И каждое полученное значение проверять на InStr в уже собранной строке?
Нет. Этот запрос складывает два столбца в один и сам отбрасывает дубли из 2-го столбца, если значение есть в первом.
...
Рейтинг: 0 / 0
29.03.2016, 22:44
    #39203702
123_456_789
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собрать данные из неск.записей в одну строку
не понял: какой "этот" - ADODB или DAO?
может код покажете?
...
Рейтинг: 0 / 0
30.03.2016, 04:48
    #39203762
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собрать данные из неск.записей в одну строку
123_456_789, Слияние полей из разных строк запроса.

123_456_789 не понял: какой "этот" - ADODB или DAO?
может код покажете?Тут-> Конкатенация столбцов
...
Рейтинг: 0 / 0
30.03.2016, 07:32
    #39203784
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собрать данные из неск.записей в одну строку
123_456_789не понял: какой "этот" - ADODB или DAO?
UNION, который предложил Анатолий складывает 2 столбца в один и отбрасывает дубликаты независимо от способа вызова, а если применить метод GetString, который есть долько в DAO, столбец можно превратить в текстовую строку. Пример кода есть в хелпе
...
Рейтинг: 0 / 0
30.03.2016, 07:43
    #39203791
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собрать данные из неск.записей в одну строку
MrShin... метод GetString, который есть долько в DAO, столбец можно превратить в текстовую строку...?
...
Рейтинг: 0 / 0
30.03.2016, 08:23
    #39203804
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собрать данные из неск.записей в одну строку
Конечно в ADO, сорри.
...
Рейтинг: 0 / 0
30.03.2016, 17:51
    #39204402
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собрать данные из неск.записей в одну строку
Да, в ADO изящно получается!
А подскажите про параметры функции, у меня так (слямзил из чужого кода):
Код: vbnet
1.
GetString(, , "", ",")


второй, вроде как, - число выводимых в результате полей
четвёртый - разделитель
а первый и третий за что отвечают?
...
Рейтинг: 0 / 0
30.03.2016, 19:06
    #39204487
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Собрать данные из неск.записей в одну строку
_Вопрос?,
https://msdn.microsoft.com/en-us/library/ms676975(v=vs.85).aspx
Код: vbnet
1.
Variant = recordset.GetString(StringFormat, NumRows, ColumnDelimiter, RowDelimiter, NullExpr)


Parameters
StringFormat
A StringFormatEnum value that specifies how the Recordset should be converted to a string. The RowDelimiter, ColumnDelimiter, and NullExpr parameters are used only with a StringFormat of adClipString.
NumRows
Optional. The number of rows to be converted in the Recordset. If NumRows is not specified, or if it is greater than the total number of rows in the Recordset, then all the rows in the Recordset are converted.
ColumnDelimiter
Optional. A delimiter used between columns, if specified, otherwise the TAB character.
RowDelimiter
Optional. A delimiter used between rows, if specified, otherwise the CARRIAGE RETURN character.
NullExpr
Optional. An expression used in place of a null value, if specified, otherwise the empty string.

Перевод Google
Параметры
StringFormat
Значение StringFormat Enum, который определяет, как Recordset должен быть преобразован в строку. Ряд Разделитель, Колонка Ограничитель и параметры NumExpr используются только с StringFormat из adClipString.
NumRows
Необязательный. Количество строк, которые будут преобразованы в Recordset. Если NumRows не указан, или если оно больше, чем общее количество строк в Recordset, то все строки в Recordset преобразуются.
ColumnDelimiter
Необязательный. Разделитель, используемый между колоннами, если указано, в противном случае символ табуляции.
RowDelimiter
Необязательный. Разделитель, используемый между строк, если указано, в противном случае символ возврата каретки символ.
NullExpr
Необязательный. Выражение используется вместо нулевого значения, если указано, в противном случае пустая строка.
Восторга не разделяю (в разрезе сабжа), будут жуткие тормоза на хоть сколько нибудь значимом количестве данных.
Имхо лучше Метод 3. Заполнение таблицы при помощи запросов (по Митину) по ссылке выше
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Собрать данные из неск.записей в одну строку / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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