1

schoolInfoAccess 2007 には次の名前のテーブルがあり、 2 つのフィールドがあります(schName and mjrName)

(cboMajors)今、Visual Basic 6で他のコンボに関連するコンボを設計しようとしてい(cboSchool)ます。

実際のところ、コンボボックスをカスケードする必要があります。cboSchool でアイテムを選択すると、他のコンボはその学校に関連する専攻のみを表す必要があり(records with schName=x and mjrName=y)ます。

Private Sub Form_Activate()

connection
' the Connection is a code in module contains codes are needed to make the connection between form and the database

fill_schools
fill_majors

End Sub

また、

Private Sub fill_schools()
 With rs

    .Open "select DISTINCT schName from tblSchoolsInfo", cn, 2, 3

        Do While Not .EOF
        cboSchool.AddItem (.Fields(0))
        .MoveNext
    Loop
  End With
  rs.Close
End Sub

Private Sub fill_majors()

 With rs
    .Open "select DISTINCT mjrName from tblSchoolsInfo where schName= '" & Me.cboSchool & " '", cn, 2, 3

        Do While Not .EOF
        cboMajors.AddItem (.Fields(0))
        .MoveNext
    Loop
  End With
End Sub

現在: 最初のコンボは正しい値を取得しますが、2 番目のコンボは完全に空です。

4

3 に答える 3

1

OPはdreamincode.netでこれを解決しました。彼は、コンボ ボックスの文字列の最後に余分なスペースを追加していました: Me.cboSchool & " '"

私は常々、「この動作は設計によるものです」と言いたいと思っていました。:)

于 2013-02-04T21:42:24.070 に答える
1

あなたが私たちに与えてくれたコードのスニペットでは、Form_Activate() で実際に学校を選択する場所がどこにもありません。これは、その手順の終わりまでに学校で選択がないことを意味するため、fill_majors() が実行されます。

select DISTINCT mjrName from tblSchoolsInfo where schName= ' '

ちなみに、その末尾のスペースは意図的なものですか?その場合、学校が選択されていてもレコードは返されません。

于 2013-02-02T16:06:57.217 に答える
0

cboMajors.AddItem (.Fields(0)) <--- .Fields() を確認しましたか?

于 2013-02-02T14:33:46.590 に答える