Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > данные из запроса в отчет вывести в строчку


Автор: Masja 16.2.2009, 17:16
Подскажите, пожалуйста.

Есть препод ИВАНОВ, который может выполнять определенные работы. Данные из запроса берутся.

Вопрос: как можно в отчете вывести работы в строчку (перечислить через запятую) в виде:
 .....бла-бла-бла может выполнять следующие работы: работа1, работа2, работа3

как реализовать?



Автор: Akina 16.2.2009, 17:56
Да. Напишите пользовательскую функцию, которая соберёт данные в строку, и используйте её в источнике данных контрола

Автор: Masja 16.2.2009, 18:57
можно конкретный пример?

Автор: bopoha 16.2.2009, 19:18
Вот работающая фукния:
Код

Public Function MC_RecsInStrExt(ByVal stSQL As String _
                                , ByVal stFieldName As String _
                                , Optional ByVal SimvRazd As String = ", ") As String
' Скоков С.А.
' формирут строку из записей таблицы, разделяя их разделителями (запятыми)
' stSQL - запрос (может быть и именем таблицы или сохраненного запроса)
' stFieldName - имя поле, из которого брать данные
' SimvRazd - символ разделитель значений
On Error GoTo Err_
    
    Dim stRet As String
    Dim rstTable As Recordset
    
    Set rstTable = CurrentDb.OpenRecordset(stSQL, dbOpenDynaset)
    ' если есть записи то
    If rstTable.RecordCount > 0 Then
        ' это потому что эти значения разделяются запятыми и ставятся перед присваиванием _
            знач-я из таблицы (см. цикл ниже), _
            а перед первым значением запятую ставить не нужно
        stRet = Nz(rstTable(stFieldName))
        rstTable.MoveNext
    End If
    
    Do While Not rstTable.EOF
        stRet = stRet & SimvRazd & Nz(rstTable(stFieldName))
        rstTable.MoveNext
    Loop
    
    rstTable.Close
    
    MC_RecsInStrExt = stRet

Exit_:
    Exit Function

Err_:
    'MsgBox Err.Description
    Resume Exit_
End Function


Пример использования:
Код

'-- выводит через запятую технику для клиента с кодом 123
MsgBox MC_RecsInStrExt("SELECT T_TEHNIKA FROM b_klient_tehnika WHERE K_KLIENT = " & 123, "T_TEHNIKA")

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)