P.S. Кажется, я понял, что происходит. Поскольку у перекрестного запроса список полей меняется от запуска к запуску, то в момент создания отчета Аксесс видит этот список полей каким-то случайным образом - совершенно не обязательно правильным с точки зрения программиста (в данном случае Училки). Поэтому я предлагаю временно убрать из запроса этот параметр, чтобы список полей показался правильно. После этого надо создать отчет. Но на этом проблемы не кончаются - дело в том, что при запуске отчета опять будет проблема с теми полями, которые в отчете созданы, а в запросе не оказались. На этот случай надо сделать то, что я уже упоминал:
Владимир Саныч |
в Report_Open стал открывать рекордсет, сидящий на рекордсорсе отчета, и чистить контролсорсы тех контролов, для которых там нет поля |
Вот как это можно сделать (приблизительно):
Private Sub Report_Open(Cancel As Integer)
Dim rs As Recordset, c As Control, f As Field, bFound As Boolean
Set rs = CurrentDb.OpenRecordset(Me.RecordSource, dbOpenDynaset, dbReadOnly)
For Each c In Me.Controls
If TypeOf c Is TextBox Then
bFound = False
For Each f In rs.Fields
If c.ControlSource = f.Name Then bFound = True
Next
If Not bFound Then c.ControlSource = ""
End If
Next
rs.Close
Set rs = Nothing
End Sub