2012-04-04 2 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라고 말합니다.

감사합니다,

내가 Access 2007에서 사용하지 않는 한

답변

3

그러나 이것은 아마도 Me!Computer & PCnumber & .Caption을 대체 작동합니다 : 나는 또한 DCount 변경하는 경향 거라고

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

기능 :

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 
관련 문제