2013-02-02 104 views
1

我在2007年有一個名爲:schoolInfo的表,它有兩個字段(schName and mjrName)visual basic 6 access 2007數據庫編程級聯組合框

現在我試圖設計一個組合在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

只是一個建議你檢查的 cboMajors.AddItem(點域(0))< ---點域()

+0

不!但我會:) – user2035282

1

在您給予我們的代碼片段中,我看不到任何地方你實際上在Form_Activate()中選擇了學校。這意味着,通過該過程結束時,將有在學校沒有選擇,所以fill_majors()將執行:

select DISTINCT mjrName from tblSchoolsInfo where schName= ' ' 

順便提及,是尾隨空間故意?在這種情況下,即使選擇了學校,也不會返回記錄。

+0

它是連接過程有義務進行必要的連接,我有這樣一個模塊: 「公共CN作爲新ADODB.connection 公共RS作爲新ADODB.Recordset Sub的() 設置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' – user2035282

1

OP在dreamincode.net解決了這個問題。他在他的組合框字符串的末尾加上一個額外的空間:Me.cboSchool &「'」

我一直想這樣說:「這種行爲是有意設計的。」 :)