【问题标题】:visual basic 6 access 2007 database programming cascading combo boxesvisual basic 6 access 2007 数据库编程级联组合框
【发布时间】:2013-02-02 13:31:35
【问题描述】:

我在 access 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

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

【问题讨论】:

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


    【解决方案1】:

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

    select DISTINCT mjrName from tblSchoolsInfo where schName= ' '
    

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

    【讨论】:

    • 建立所需连接是连接过程的职责,我有一个这样的模块:'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;Data Source=" & App.Path & "\sch.accdb; Persist Security Info=False" .Open .CursorLocation = adUseClient End With End Sub'
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      只是一个建议,您是否检查了 cboMajors.AddItem (.Fields(0))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多