2012-04-04 119 views
1

長時間潛伏者,第一次海報。我有一個非常簡單的數據庫,可以根據未綁定的組合框更新計算機實驗室座位表,供教師選擇他/她的班級。Microsoft Access VB:使用變量作爲字段名稱的一部分

我有什麼現在的問題是:

Private Sub Combo29_AfterUpdate() 
If DCount("[StudentName]", "SelectedClass", "[StudentNumber]=1") <> 1 Then Me!Computer1.Caption = "" Else Me!Computer1.Caption = DLookup("[StudentName]", "SelectedClass", "[StudentNumber] = 1") 

它在技術上只是罰款,但不是重複同樣的線路,變動數1〜2號,等了所有25臺電腦,我喜歡有話的大意是:

Private Sub Combo29_AfterUpdate() 
Dim PCnumber as Integer 
PCnumber = 0 
NextPC: 
PCnumber = PCnumber + 1 
If DCount("[StudentName]", "SelectedClass", "[StudentNumber]=PCnumber") <> 1 Then Me!Computer & PCnumber & .Caption = "" Else Me!Computer & PCnumber & .Caption = DLookup("[StudentName]", "SelectedClass", "[StudentNumber] = PCnumber") 
If PCNumber = 25 Then End Else goto NextPC 
End Sub 

我上過幾個板,但我似乎無法得到來連接變量PCnumber作爲參考標籤上的表單上的部分語法正確的。目前我正在做的是「漫長的路」,爲每臺電腦重複整個生產線。然而,這並不是我第一次爲我做出更多工作,我希望不僅僅是爲了這個問題而學習它,而是爲了讓我的生活在未來更輕鬆。

我使用的是Access 2007,而Visual Basic說它是6.5。

感謝,

回答

3

我沒有用Access 2007中,但這可能會工作作爲Me!Computer & PCnumber & .Caption的替代品:

Me.Controls("Computer" & PCnumber).Caption 

我還傾向於改變DCount功能爲:

DLookup("[StudentName]", "SelectedClass", "[StudentNumber] = " & PCnumber) 

。 ..但我不會經常使用它們,所以它可能工作。

順便說一句,你可以用下面的循環結構,而不是GoTo在代碼:

For PCnumber = 1 to 25 Step 1 
    ' code 
Next PCnumber 
1

使用goto語句比錯誤處理以外的任何其他通常被認爲是一個壞主意。使用正確形成的循環或創建單獨的子/函數來處理您在GoTo語句下放置的任務(後者不適用於您的情況)要好得多。

我會寫這樣的代碼。

Private Sub Combo29_AfterUpdate() 
    Dim PCnumber as Integer 'Instantiates as 0 
    Do Until PCNumber = 25 
     If DCount("[StudentName]", "SelectedClass", "[StudentNumber]=" & PCnumber) <> 1 Then 
      Me.Controls(Me!Computer & PCnumber).Caption = "" 
     Else 
      Me.Controls(Me!Computer & PCnumber).Caption = DLookup("[StudentName]", "SelectedClass", "[StudentNumber] = " & PCnumber) 
     End If  
     PCNumber = PCNumber + 1 
    Loop 
End Sub 
相關問題