2016-04-15 4 views
0

У меня есть форма, на которой есть кнопка для отчета. Я хочу установить Report .Recordsource на все, что на экране, так что в основном мне нужно .RecordsetClone формы отправить в Report. Вот что я пробовал, но он не работает:Отчет о доступе - Recordsetclone as. Recordsource

Me.Recordsource= Forms!Myform.RecordsetClone 

У меня есть неверный аргумент. Есть идеи, как это решить?

EDIT:

Я попробовал это тоже - эта кнопка расположена на форме, которая имеет записи и открывает отчет:

Private Sub cmdOpenReport_Click() 

DoCmd.OpenReport "MyReport", acViewReport 
    Reports![MyReport].RecordSource = Me.RecordSource 
Reports![MyReport].Filter = Me.Filter 
Reports![MyReport].FilterOn = True 

End Sub 
+0

'Recordsource' хочет строку (запрос или SQL). Вы можете попробовать «Set Me.Recordset = Forms! Myform.RecordsetClone», но я не уверен, что это работает. – Andre

+0

@Andre, при вставке этого в событие Report_Open, я получил ошибку: «Эта функция доступна только в ADP». Похоже, это не работает. – LuckyLuke82

ответ

0

Густава, это правильный ответ. Я открыл для этого еще один поток, но я не знал, что не так и где. Извините за crossposting. вот ссылка на мою нить: Access Report - show current recordsource of another form

Dim strWhere As String 

     Me.Dirty = False 

     With Me.Recordset.Clone 
      Do Until .EOF 
       strWhere = strWhere & "," & !ID 
       .MoveNext 
      Loop 
     End With 
     strWhere = Mid(strWhere, 2) 
     DoCmd.OpenReport "MyReport", acViewReport, WhereCondition:="ID In (" & strWhere & ") 

Модераторы могут удалить один из потоков, я не могу этого сделать.

0

Вы не можете сделать это, но вы можете уйти с:

Me.RecordSource = Forms!Myform.RecordSource 

, хотя это не будет включать фильтр, применяемый к форме. Тем не менее, фильтр может быть скопирован таким же образом, а затем:

Me.Filter = Forms!Myform.Filter 
Me.FilterOn = True 

при сортировке должно быть указано в докладе обычным способом.

Доказательство концепции

Private Sub Report_Open(Cancel As Integer) 

    If MsgBox("Mod 2?", vbQuestion + vbYesNo, "Select") = vbYes Then 
     Me.RecordSource = "Select * From TestTable Where Id Mod 2 = 0" 
    End If 

End Sub 
+0

Gustav, где и как именно я должен попробовать это, в событии Report_Open? Я пробовал, но ничего не происходит. Или я должен что-то сделать в событии button_click, где я открываю отчет (DoCmd.Openreport, «myReport», AcViewPreview) – LuckyLuke82

+0

Я бы использовал событие click - но тогда вы должны заменить 'Me' на' Reports. [NameOfYourReport] ' – Gustav

+0

проверить мой отредактированный вопрос Если это то, что вы имели в виду. Это не работает. Попробуйте выполнить тестирование с пустой пустой формой - введите 2 строки, а затем откройте отчет без закрытия формы, чтобы увидеть эти 2 строки - вы увидите только одну, последнюю сохраненную запись. – LuckyLuke82

Смежные вопросы