Непонятно, зачем Вам рекордсет:
Private Sub bt_create_report_Click()
Dim data_review_ot As String
Dim data_review_do As String
'Dim dbs As DAO.Database
'Dim rst As DAO.Recordset
Dim m As Date, n As Date ' каждая переменная объявляется отдельно! иначе m будет типа variant
Dim strsql AS String, pole_for_viborki As String
Select Case Me.pole_for_viborki
Case "дата постановки" 'в основной форме есть поле в котором можно выбрать название
'столбца по которому будет производится выборка по дате(интервалу)
pole_for_viborki = "реестр_больных.data_postanovki"
Case "дата рождения"
pole_for_viborki = "реестр_больных.data_brithday"
Case "дата направления на госпитализацию"
pole_for_viborki = "реестр_больных.data_napravleniagospit"
Case "дата госпитализации"
pole_for_viborki = "реестр_больных.data_gospitalizacii"
End Select
data_review_ot = "#" & Format(Me.data_review_ot.Value, "mm\/dd\/yyyy") & "#" 'Me.data_review_ot.Value '
data_review_do = "#" & Format(Me.data_review_do.Value, "mm\/dd\/yyyy") & "#" 'Me.data_review_do.Value '
strsql = "SELECT DISTINCT * FROM реестр_больных WHERE ((" & pole_for_viborki & ") BETWEEN " & data_review_ot & " AND " & data_review_do & ");"
'Set dbs = CurrentDb()
'Set rst = dbs.OpenRecordset(strsql)
Me.review_reestr_pri.Form.RecordSource = strsql
'тут скорее всего надо написать что то для передачи результата выборки rst в подчиненную форму review_reestr_pri
'Me.review_reestr_pri.Requery
'Me.review_reestr_pri.Form.Refresh
'Me.Refresh
'rst.Close
'Set rst = Nothing
'Set dbs = Nothing
End Sub