ЕСЛИ вы хотите создать отчет с помощью генератора отчетов MS Access, вам придется использовать объект запроса (может быть способ обманом заставить MS Access запустить его из вашего набора записей, но это вероятно, не стоит ваших усилий).
Вы можете создать объект запроса в окне «База данных». Нажмите кнопку «Запрос» в списке объектов, а затем нажмите «Создать». В результирующем редакторе вы можете создать запрос графически или, если хотите, с помощью SQL. Сохраните запрос и дайте ему полное имя.
Аналогично отчет может быть создан в окне "База данных". Нажмите кнопку «Отчет», а затем «Новый». В появившемся мастере вы свяжете отчет с только что созданным запросом.
Обновление: Как сказал Д.В. Фентон сказал, что вы можете встроить запрос прямо в объект отчета, не создавая отдельный объект запроса. Я предпочитаю создать его в любом случае.
Проблема с этим методом заключается в том, что вам придется создавать отдельный запрос и отчет для каждой таблицы.
ЕСЛИ вы просто хотите вывести результат в текстовый файл (чтобы прочитать/распечатать позже), вы можете сделать это, используя наборы записей, как в коде VBA. Это будет выглядеть примерно так
'...
dim strFoo as string
dim strBar as string
'...
if not rs.bof then
rd.MoveFirst
end if
While Not rs.EOF
strFoo = rs("foo") 'copy the value in the field
'named "foo" into strFoo.
strBar = rs("bar")
'... etc. for all fields you want
'
'write out the values to a text file
'(I'll leave this an exercise for the reader)
'
rs.MoveNext
Wend
'...
Разбор всех таблиц можно выполнить в цикле примерно так:
dim strTableName as string
dim db As Database
'...
Set db = CurrentDb
db.TableDefs.Refresh
For Each myTable In db.TableDefs
If Len(myTable.Connect) > 0 Then
strTableName = myTable.Name
'...
'Do something with the table
'...
End If
Next
set db = nothing
=======================ОБНОВЛЕНИЕ=======================
Можно запустить отчет MS-Access из набора записей. Чтобы повторить то, что я сказал, вопрос tksy From Доступ к Интернету можно использовать свойство "имя" набора записей. Полученный код будет выглядеть примерно так:
В отчете
Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = gMyRecordSet.Name
End Sub
В вызывающем объекте (модуле, форме и т. д.)
Public gMyRecordSet As Recordset
'...
Public Sub callMyReport()
'...
Set gMyRecordSet = CurrentDb.OpenRecordset("Select * " & _
"from foo " & _
"where bar='yaddah'")
DoCmd.OpenReport "myReport", acViewPreview
'...
gMyRecordSet.Close
Set gMyRecordSet = Nothing
'...
End Sub
QED
person
BIBD
schedule
27.10.2008