2014-06-11 19 views
0

在Access窗體中,我使用列表框來選擇要查看的記錄(手動正常工作)。該列表框在查詢中按照字母順序排列,並且工作正常。使用排序列表框選擇列表中的第一條記錄,而不是數據庫中

使用VBA,我有列表框選擇表單第一次加載時的第一個項目,並且當用戶單擊一個按鈕重新查詢時(用戶可以按照年齡縮小名稱列表形式本身

當表單加載時,它不會加載列表框中第一個項目的記錄,當按下搜索按鈕時,表單將加載數據庫中與條件匹配的第一條記錄,甚至如果它不在列表框中的第一項匹配

這是我這兩個事件代碼:

Private Sub btnSearch_Click() 
    DoCmd.RunMacro "Requery", 1 

    Me.listControl.SetFocus 
    Me.listControl.Selected(0) = True 
    Me.listControl = Me.listControl.ItemData(0) 
End Sub 


Private Sub Form_Load() 
    DoCmd.RunMacro "Requery", 1 

    Me.listControl.SetFocus 
    Me.listControl.Selected(0) = True 
    Me.listControl = Me.listControl.ItemData(0) 
End Sub 

我在做什麼錯?

+0

宏是做什麼的? – Roland

+0

它重新查詢填充表單的查詢。它只有一個動作,它是Requery,沒有指定控件。 –

+0

並在哪個事件中加載所選記錄? – Roland

回答

0

我不知道這個功能,並且今天在工作中嘗試了它。它生成一個嵌入式宏。它也只是一種單向切換,即列表框控制着窗體,反之亦然。我想這就是你的問題首先出現在哪裏。

你必須做到以下幾點:

  1. 保持列表框,如果你過濾一個,也過濾其他形式的記錄集等同,即。如果不是,你會遇到瘋狂的情況。
  2. 扔掉嵌入的宏並在更新後事件使用FindFirst method(最佳形式的模塊中,而不是在列表框中道具)
  3. 線了列表框所以它總是顯示通過選擇形式選定的記錄在窗體的Form_Current事件的相關行
  4. 捕獲一個無限循環做2和3僅如果兩個ID不相同

如果你不能得到它的工作,職位的代碼,其中你正在做過濾(並解釋如何),明天我會看看。

+0

FindFirst是否通過記錄標識轉到查詢中的第一條記錄,或通過排序後的第一條記錄轉到第一條記錄? –

+0

有一個獨特的ID-誰在乎?但是AFAIK尊重記錄集的順序。試試吧。 – Roland

相關問題