2014-01-08 52 views
1

我想在Form_Load()的多選組合框中選擇Persons_Form!ID中的ID多選組合框設置選定屬性True

下面的代碼執行得很好。消息框確實會彈出;但是,該值始終爲false,並且複選框在組合框中未勾選,即使將其設置爲True。

我的預期行爲是在代碼運行後檢查它,並在MsgBox中返回True。爲了獲得預期的行爲,我需要改變什麼?

Private Sub Form_Load() 
    If ID.Value >= 0 Then 
     Beep 
    Else 
     Beep 
     With person 
      .SetFocus 
      For x = Abs(.ColumnHeads) To (.ListCount - 1) 
       If (.ItemData(x) Like Forms!Persons_Form!ID.Value) Then 
        .Selected(x) = True 
        MsgBox (.Selected(x)) 
       End If 
      Next 
     End With 
    End If 
End Sub 
+0

把代碼打破在 「如果(.ItemData(x)的像......」 行,然後將鼠標懸停在這兩個 「.ItemData(X)」 和「形式!Persons_Form!ID .Value「,它會告訴你Access認爲這兩個值是什麼。然後按F8逐句通過代碼,並檢查每個循環的值。你可能會馬上看到你做錯了什麼,或者Access不喜歡什麼。 –

+0

訪問「喜歡」代碼。 IF語句中的代碼在正確的時間執行。 x被分配給正確的索引。 Selected(x)確實返回複選框的當前狀態,賦值語句不會導致錯誤。然而在賦值語句Selected(x)之​​後仍然返回false。 – Roger

+0

所以你說它擊中設置的行.Selected(x)= true,它仍然彈出一個框,說.Selected(x)= false? –

回答

1

對不起,我不能評論我的低代表尚未。但是對於person對象,.MultiSelect屬性顯示什麼?如果它爲零,則不能將多個選擇設置爲true。

1

你必須排除故障。開始簡單。處理。對於初學者,請留下SetFocus

Private Sub Form_Load() 
    person.Selected(1) = True 
    MsgBox (person.Selected(1)) 
End Sub 

此外,添加一個布爾變量。使用變量可以清除許多混亂。

Private Sub Form_Load() 
    Dim booSelected As Boolean 
    person.Selected(1) = True 
    booSelected = person.Selected(1) 
    MsgBox booSelected 
End Sub 
+1

明天當我開始工作時,我會試試這個。最近我對這個問題缺乏關注表示歉意。謝謝, – Roger

+0

我不知道發生了什麼。你有沒有獲得按照你想要的方式工作的功能? – Smandoli

1

我想複製我的電腦上的問題。 一旦我得到它失敗,然後我可以修復它。 我會與韋恩同意,因爲有可能是有在Form_Load一個

Persons_Form有一個ID

我(的形式),

形成具有人組合框?和 該組合組合在哪裏? 是什麼觸發了這個Form_Load? 這些東西不代表代碼片段, 你可以發佈一個可運行的片段嗎?

我會使用Northwind來填充我的人員組合,因此不需要提供任何私人數據。 然而,很高興知道ID 中的模式類型以及組合框中的ItemData類型。

TKX,

3/15 20:40星期六有限 感謝有關該問題的知名度大增。 現在我有表的問題,所以 請運行DatabaseTools /文檔管理/

on Tables: Person and Report 
and set Include-for-fields to the last radio(all items) 

and on Forms: "FormA" 
and set Include-for-Sections-and-Controls both Names&Properties 

然後,您可以把輸出表信息 ,只是「人」的控制信息到一個txt文件 並上傳到在某處 像http://www.filedropper.com/free-file-hosting.php 並將生成的網址放入下一條評論。

TKX

+0

這種情況是有兩種形式。 「FormA」包含一個「Multiselect」「Combobox」(稱爲「人物」),它被分配到一個Table「Report」列中:「Person」(MultiValue Field)女巫與表「Person」具有多對多的關係。列「ID」。用戶點擊加載「FormB」的「FormA」上的按鈕。 「FormB」允許用戶在「Person」表中創建一個新人。 「FormB」「OnClose」將刷新「FormA」中的數據,然後自動選擇與「FormB」中剛剛創建的新「person」的ID相匹配的「person」,「multiselect combobox」 – Roger