我在访问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
现在:第一个组合获取正确的值,但第二个组合完全为空。
答案 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()