2014-08-29 2 views
1

Я не использовал Access через 10 лет и должен сделать простой отчет за 1 раз. У меня есть отчет, в котором отображается история работы сотрудников. Он уже хорошо сгруппирован по имени, но то, что я хотел бы сделать, - это резюме выше полного отчета об именах, которые соответствуют условиям поиска. Как бы я сделать это в 2K7 доступеСводка результатов в отчете о доступе

т.е.

------------------------- | 
These employees were found | 
Bob      | 
Joe      |-Part I would like to add to the report 
Steve      | 
Alan      | 
------------------------- | 
Name: 
Bob 
------------------------- 
Work history 1 
Work History 2 
Work history (n) 

Name: 
Joe 
------------------------- 
Work history 1 
Work History 2 
Work history (n) 

ответ

2

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

Private Sub OpenReport_Click() 
    Dim searchCriteria As String 
    Dim sql As String 
    searchCriteria = InputBox("Input search criteria here") 
    ' you can do some validation on the search criteria here if you wish 

    ' creating the sql string for the record source of the report 
    sql = "SELECT * FROM employee_workhistory WHERE workhistory = '" & searchCriteria & "'" 

    ' opening report with blank record source 
    DoCmd.OpenReport "workhistoryReport", acViewReport 
    With Reports.Item("workhistoryReport") 
     .RecordSource = sql 
     ' assigning the control sources of the textboxes in report shouldn't be necesarry but report didn't 
     ' seem to "refresh" until a control was explicitly assigned even if it is the exact same control source 
     .Controls("employee").ControlSource = "employee" 
     .Controls("workhistory").ControlSource = "workhistory" 
    End With 

    ' looping through a group by query with results of the same search criteria 
    Dim rs As Recordset 
    sql = "SELECT employee FROM employee_workhistory WHERE workhistory = '" & searchCriteria & "' GROUP BY employee" 
    Set rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset) 
    Do Until rs.EOF 
     ' build the string you want to place on report here and assign to a text box 
     ' in header of the report 
     Debug.Print rs("employee") 
     rs.MoveNext 
    Loop 
End Sub 
+0

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

+0

Вы должны уметь связывать отчеты с использованием свойств «Master-Child» форм, чтобы этого избежать. – ashareef

+0

Или вы не имеете в виду поле в форме (критерии поиска, которые я предполагаю?) Правильно. –