2012-04-04 28 views
1

長い時間のlurker、初めてのポスター。教師がクラスを選択できるアンバウンドコンボボックスに基づいて、コンピュータラボの座席図を更新するための非常にシンプルなデータベースを用意しています。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") 

それは技術的にではなく、すべての25台のコンピュータのように、同じ行の繰り返し数2に数1の変更、のだけで正常に動作し、私は思います効果に何かを持っていることを好む:

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となっています。私がアクセス2007を使用していませんでしたが、これはおそらくMe!Computer & PCnumber & .Captionの代替として機能します

おかげで、

チャック

答えて

3

は:

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

私もDCountを変更するために傾斜させることだろう機能は:

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

です。 ..しかし、私はしばしばそれらをどちらかの方法で使用しないので、うまくいくかもしれません。さておき、あなたのコードに代わりGoToの以下のループ構造を使用することができるよう

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

後藤文を使用してエラー処理以外では、一般的に悪いアイデアと考えられています。適切に形成されたループを使用するか、別のサブ/関数を作成して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 
関連する問題