|
|
|
| Опять непонятное поведедение... Вот код:
Private Sub Search_Click()
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim strSQL As String
Set db = CurrentDb
Set qdf = db.QueryDefs("LIST")
If (Me.Document.Value <> "") Then
strSQL = "SELECT [Table1].ID, [Table1].Document, [Table1].[Document No] FROM [Table1] WHERE ((Table1.Document)=[Forms]![MAIN]![Document]);"
ElseIf (Me.DocumentNo.Value <> "") Then
strSQL = "SELECT [Table1].ID, [Table1].Document, [Table1].[Document No] FROM [Table1] WHERE ((Table1.[Document No])=[Forms]![MAIN]![DocumentNo]);"
End If
qdf.SQL = strSQL
Set db = Nothing
Set qdf = Nothing
DoCmd.Requery "LIST subform" 'должен произойти рефреш query "LIST subform" на форме "MAIN"
End Sub
|
Запрос, если его открыть отдельно работает, сабзапрос тоже, а на форме рефреш происходит только если закрыть и открыть форму заного.... Что делать? | |
|
| |
|
|
|
| Может перед выполнением запросов использовать
Me.Form.Refresh
У меня был случай, когда запрос не работал, пока данные в таблицу-источник не запишутся... | |
|
| |
|
|
|
| к сожалению не помогло.... | |
|
| |
|
|
|
| Зачем менять строку SQL сохраненного запроса?
Теряется весь смысл его сохранения, поскольку приходится заново тратить время на его оптимизирование, компилирование и т.д.
В Вашем случае нужно присваивать элементу управления формы новый источник данных в виде собранной в VBA строки SQL. | |
|
| |
|
|
|
| DoCmd.Requery "LIST subform" 'должен произойти рефреш query "LIST subform" на форме "MAIN"
Почему вы говорите о рефреш query "LIST subform"? Это должно быть имя контрола.
Если это имя контрола подчиненной формы, то попробуйте так (если код выполняется в главной форме):
Me![LIST subform].Form.RecordSource = Me![LIST subform].Form.RecordSource | |
|
| |
|
|
|
| Да, точно. Надо было просто присвоить Me![LIST subform].Form.RecordSource = strSQL.
Спасибо! | |
|
| |