2016-08-05 10 views
1

私はリストボックス名の動物を持ち、行のソースはクエリ "動物"がパススルークエリである次のコードに設定されています。ただし、リストボックスには動物は含まれません。注:クエリを実行するスタンドアロンのクエリとして "動物"というクエリを実行すると、正しく実行されますが、リストボックスには表示されません。リストボックスをクリックしたときにクエリが実行されていないかのようです。パススルークエリでAccessでRowSourceを設定する

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 

私はODBC経由で「AnimalDB.Animaltable」に接続し、次のコード(代わりに、通過の選択にクエリを切り替え)を実行する場合は、リストボックスには、動物と移入されます。

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 

アクセスSELECT SQLは、Accessクエリまたは直接値集合ソースとして使用することができますので、あなたの2番目のコード例は、作品

Me.animal.RowSource = "animal" 

または

Me.animal.RowSource = Q.Name 

でなければなりません。

P.S. Q.CloseSet Q = Nothingでなければなりませんが、サブ変数の最後で破棄されるローカル変数であるため、これは本当に必要ではありません。

+0

とても簡単!私はこれにあまりにも多くの時間を費やしました。ありがとうございました! – AlmostThere

関連する問題