Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2012, 14:46   #1
satka
Форумчанин
 
Регистрация: 17.07.2011
Сообщений: 145
По умолчанию Вывод данных в строку

Таблица
—————
Id | Data
—————
1 | a
1 | b
1 | с
2 | a
2 | d

Нужно получить в запросе так
Id | Data
—————
1 | a, b, с
2 | a, d
Вопрос: как будет выглядет запрос?
satka вне форума Ответить с цитированием
Старый 27.02.2012, 22:07   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте satka.
"..как будет выглядет запрос?.."
Средствами SQL в MS Access получить подобное отображение не возможно.
Решить задачу можно создав в VBA подобную пользовательскую функцию:
Код:
Function toRows$(Id)
Const sQ = "SELECT DISTINCT Data FROM Table WHERE Id= "
    Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
    Set cn = CurrentProject.Connection
    rs.Open sQ & Id, cn, adOpenStatic, adLockReadOnly, adCmdText
    If Not rs.EOF Then toRows = rs.GetString(adClipString, , , ", ")
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing
End Function
и с её применением строить SQL конструкцию:
Код:
SELECT Id, toRows(Id) FROM Table
так будет выглядеть запрос.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 28.02.2012, 19:29   #3
cherepushka
Пользователь
 
Регистрация: 25.02.2012
Сообщений: 81
По умолчанию

Здравствуйте, Евгений! А можно ли сделать тоже самое, но для создания отчета? Что-то бьюсь, а ничего не выходит. Есть форма со строками, напротив каждой строчки кнопка для создания этой строки в отчете для печати.
cherepushka вне форума Ответить с цитированием
Старый 01.03.2012, 21:35   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте cherepushka.
"..сделать тоже самое ...для... отчета.." - конечно можно, если в качестве источника данных для отчета
использовать запрос содержащий такое-же поле (с обращением к функции).
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 15.03.2012, 13:21   #5
ikrukov
Пользователь
 
Регистрация: 14.03.2012
Сообщений: 11
По умолчанию

вариант, который работает у меня (БД во вложении):
1. пронумеровать значения Data, относящиеся к одному ID
(запрос Q_3_Numeration_of_NonEmptyTime)
2. создать таблицу пронумерованных значений
(запрос Q_4_MakeTable_of_Numerated_NonEmpty TimeSplits)
3. транспонировать таблицу
(Q_5_Transponate_of_TimeSplits)
Вложения
Тип файла: zip 2012-03-13.zip (111.8 Кб, 28 просмотров)
ikrukov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача. Сегмент данных и вывод в строку в восьмиричной системе. AlekseiGans Помощь студентам 9 20.10.2011 13:22
Как в С# перенести вывод на новую строку? Pocomax_a C# (си шарп) 2 19.02.2011 15:31
Вывод из файла рандом строку с разделителем. bad_patefa Помощь студентам 2 25.09.2010 22:46
Вывод спец. символов в строку. Delphi Horus92 Помощь студентам 2 27.08.2010 08:54
Вывод таблицы не выделяя строку Droid БД в Delphi 0 01.08.2009 12:04