Visual Basic 6 Access 2007 Базы данных программирования каскадные поля со списком

У меня есть таблица с именем: schoolInfo в доступе 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

Теперь: первая комбинация получает правильные значения, но вторая полностью пуста.

3 ответа

В фрагменте кода, который вы нам дали, я нигде не вижу, где вы на самом деле выбираете школу в Form_Activate(). Это означает, что к концу этой процедуры в школе не будет выбора, поэтому fill_majors() выполнит:

select DISTINCT mjrName from tblSchoolsInfo where schName= ' '

Между прочим, это замыкающее пространство преднамеренное? В этом случае это не вернет записи, даже если выбрана школа.

ОП решил это в dreamincode.net. Он занял дополнительное место в конце строки со списком: Me.cboSchool & " '"

Я всегда хотел сказать это: "Такое поведение разработано".:)

Просто предложение вы проверили cboMajors.AddItem (.Fields(0)) <---.Fields ()

Другие вопросы по тегам