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

Vb6 visual basic 6 access 2007数据库编程级联组合框,vb6,combobox,ms-access-2007,database-programming,Vb6,Combobox,Ms Access 2007,Database Programming,我在access 2007中有一个名为:schoolInfo的表,它有两个字段(schName和mjrName) 现在,我正试图在Visual Basic 6(cboMajors)中设计一个组合,它与另一个组合(cboSchool)相关 事实上,我希望有层叠的组合框。当我在cboSchool中选择一个项目时,另一个组合应该只代表该学校的相关专业(记录为schName=x和mjrName=y) 而且 现在:第一个组合得到正确的值,但第二个组合完全为空。只是一个建议您检查了 cboMajors.Ad

我在access 2007中有一个名为:
schoolInfo
的表,它有两个字段
(schName和mjrName)

现在,我正试图在Visual Basic 6
(cboMajors)
中设计一个组合,它与另一个组合
(cboSchool)
相关

事实上,我希望有层叠的组合框。当我在cboSchool中选择一个项目时,另一个组合应该只代表该学校的相关专业
(记录为schName=x和mjrName=y)

而且


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

只是一个建议您检查了
cboMajors.AddItem(.Fields(0))在您给我们的代码片段中,我看不到您在表单_Activate()中实际选择学校的任何地方。这意味着在该过程结束时,学校将没有选择,因此fill_majors()将执行:

select DISTINCT mjrName from tblSchoolsInfo where schName= ' '

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

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


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

连接过程的职责是建立所需的连接,我有一个这样的模块:“Public cn As New ADODB.Connection Public rs As New ADODB.Recordset Sub Connection()Set cn=New ADODB.Connection With cn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“&App.Path&”\sch.accdb;Persist Security Info=False“.Open.CursorLocation=adUseClient End With 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
select DISTINCT mjrName from tblSchoolsInfo where schName= ' '