visual basic 6 access 2007数据库编程级联组合框

时间:2013-02-02 13:31:35

标签: vb6 combobox ms-access-2007 database-programming

我在访问2007中有一个名为schoolInfo的表,它有两个字段(schName and mjrName)

现在我正在尝试在Visual Basic 6 (cboMajors)中设计一个与其他组合(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

现在:第一个组合获取正确的值,但第二个组合完全为空。

3 个答案:

答案 0 :(得分:1)

在你给我们的代码片段中,我看不到你在Form_Activate()中实际选择学校的任何地方。这意味着在该程序结束时,学校将没有选择,因此fill_majors()将执行:

select DISTINCT mjrName from tblSchoolsInfo where schName= ' '

顺便说一句,尾随空间是故意的吗?在这种情况下,即使选择了学校,也不会返回记录。

答案 1 :(得分:1)

OP在dreamincode.net解决了这个问题。他在他的组合框字符串末端添加了一个额外的空间:Me.cboSchool& “'”

我一直想说:“这种行为是设计上的。” :)

答案 2 :(得分:0)

只是一个建议你检查了吗? cboMajors.AddItem(.Fields(0))< --- .Fields()