1

我有一个名为:schoolInfoin access 2007 的表,它有两个字段(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

现在:第一个组合得到正确的值,但第二个是完全空的。

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 回答