Private Sub Form_Load()
    Dim db2 As ADODB.Connection
      Set db2 = New ADODB.Connection
      db2.CursorLocation = adUseClient
      db2.Open "PROVIDER=MSDataShape;Data PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" & wjy
      Set adoPrimaryRS10 = New ADODB.Recordset
      adoPrimaryRS10.Open "SHAPE {select 项目特证,特证值,join from 项目特证} AS ParentCMD APPEND ({select join,特证值,id from 特证值 } AS ChildCMD2 RELATE join TO join) AS ChildCMD2", db2, adOpenStatic, adLockOptimistic
      mbDataChanged = False
      Set rw1 = CreateWorkspace("", "admin", "")
      '打开数据库
      Set rs1 = rw1.OpenDatabase(wjy)
      '创建结果集
      Set rc1 = rs1.OpenRecordset("select * from 特证值")
      End sub
Private Sub DataGrid9_AfterColUpdate(ByVal ColIndex As Integer)
        DataGrid9.Columns(1).Value = Combo7.DataField
End Sub
Private Sub DataGrid9_Click()
        Combo7.Visible = False
        rc1.MoveFirst
        Do
        If DataGrid9.Col = 1 Then      ' Position and size the ComboBox, then show it.
        If adoPrimaryRS10!Join = rc1!Join Then DataGrid9.Columns(1).Button = True: Combo7.Visible = True
        Combo7.Width = DataGrid9.Columns(DataGrid9.Col).Width + 50
        Combo7.Left = DataGrid9.Left + DataGrid9.Columns(DataGrid9.Col).Left
        Combo7.Top = DataGrid9.Top + DataGrid9.Row * (DataGrid9.RowHeight) + (DataGrid9.HeadLines) * 195
        Combo7.SetFocus
        If DataGrid9.Columns(DataGrid9.Col).Text <> "" Then Combo7.Text = DataGrid9.Columns(DataGrid9.Col).Text
        End If
        rc1.MoveNext
        Loop Until rc1.EOF = True
      End Sub
Private Sub DataGrid9_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
           i = 0
           With adoPrimaryRS10
           Combo7.Text = ""
            '把"培训内容"添入列表框
            Combo7.Clear
           rc1.MoveFirst
           Do
           If rc1!特证值 = Null Then GoTo 10
           If !Join = rc1!Join Then
           MC = rc1!特证值
           Combo7.AddItem MC, i
           Combo7.Visible = True
           End If
10         rc1.MoveNext
           i = i + 1
           Loop Until rc1.EOF = True
           End With
End Sub
Private Sub Combo7_Click()
    If DataGrid9.Col = 1 Then
      DataGrid9.Columns(1).Value = Combo7.Text
      Combo7.Visible = False
    End If
End Sub
以上是我的参阅了各种参考编出的程序,在DATAGRID中能显示COMBO的显示选项,我的想法是adoPrimaryRS10的“特证值”在数据中用关键字(JOIN)控制COMBO的显示,在数据库中“特证值”是有的有,有的没有,现在是没有的也显示了COMBO。请各位精英帮助解决。