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 ()