2016-08-05 4 views
1

У меня есть имя поля списка, а источник строки - следующий код, в котором запрос «животное» - это проход через запрос. Однако поле списка не заполняется животными. Примечание: если я запустил запрос «животное» как самостоятельный проход через запрос, он работает правильно, он просто не заполняет список. Это почти так, как если бы запрос не выполнялся при нажатии в списке.Настройка RowSource в Access с прохождением через запрос

Private Sub animallist_Enter() 
    Dim Q   As QueryDef 
    Dim DB   As Database 

    ' Use for dynamic SQL statement' 
    Dim strSQL  As String 

    ' Modify the Query. 
    Set DB = CurrentDb() 
    Set Q = DB.QueryDefs("animal") 

    strSQL = "Select distinct(animal) From AnimalDB.Animaltable" 

    Q.SQL = strSQL 
    Q.Close 

    Me.animal.RowSource = strSQL 
End Sub 

Если подключить к «AnimalDB.Animaltable» с помощью ODBC и выполнить следующий код (переключение запроса к избранным вместо пройти), окно списка заполнит с животными.

Private Sub animallist_Enter() 
    Dim Q   As QueryDef 
    Dim DB   As Database 

    ' Use for dynamic SQL statement' 
    Dim strSQL  As String 

    ' Modify the Query. 
    Set DB = CurrentDb() 
    Set Q = DB.QueryDefs("animal") 

    strSQL = "Select distinct(animal) From [AnimalDB_Animaltable]" 

    Q.SQL = strSQL 
    Q.Close 

    Me.animal.RowSource = strSQL 
End Sub 

Почему пропуск через запрос не заполняет список?

ответ

3

Вы устанавливаете querydef, но не используете его.

Me.animal.RowSource = strSQL 

должен быть

Me.animal.RowSource = "animal" 

или

Me.animal.RowSource = Q.Name 

Ваш второй пример кода работает, так как Access SELECT, SQL может использоваться в запросе доступа или непосредственно в качестве RowSource.

P.S. Q.Close должно быть Set Q = Nothing, но это тоже не нужно, потому что это локальная переменная, которая уничтожается в конце суб.

+0

такой простой !!! Я потратил слишком много времени на это. Спасибо! – AlmostThere

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

  • Нет связанных вопросов^_^