Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Access 2003
 
 автор: LilijaSt   (29.10.2008 в 13:33)   личное сообщение
 
 

Опять непонятное поведедение... Вот код:


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

Запрос, если его открыть отдельно работает, сабзапрос тоже, а на форме рефреш происходит только если закрыть и открыть форму заного.... Что делать?

  Ответить  
 
 автор: shaucha   (29.10.2008 в 13:38)   личное сообщение
 
 

Может перед выполнением запросов использовать

Me.Form.Refresh

У меня был случай, когда запрос не работал, пока данные в таблицу-источник не запишутся...

  Ответить  
 
 автор: LilijaSt   (29.10.2008 в 13:55)   личное сообщение
 
 

к сожалению не помогло....

  Ответить  
 
 автор: Lukas   (29.10.2008 в 14:01)   личное сообщение
 
 

Зачем менять строку SQL сохраненного запроса?
Теряется весь смысл его сохранения, поскольку приходится заново тратить время на его оптимизирование, компилирование и т.д.
В Вашем случае нужно присваивать элементу управления формы новый источник данных в виде собранной в VBA строки SQL.

  Ответить  
 
 автор: Bellerofont   (29.10.2008 в 13:57)   личное сообщение
 
 

DoCmd.Requery "LIST subform" 'должен произойти рефреш query "LIST subform" на форме "MAIN"
Почему вы говорите о рефреш query "LIST subform"? Это должно быть имя контрола.
Если это имя контрола подчиненной формы, то попробуйте так (если код выполняется в главной форме):
Me![LIST subform].Form.RecordSource = Me![LIST subform].Form.RecordSource

  Ответить  
 
 автор: LilijaSt   (04.11.2008 в 11:52)   личное сообщение
 
 

Да, точно. Надо было просто присвоить Me![LIST subform].Form.RecordSource = strSQL.
Спасибо!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList