建立窗体,窗体上有控件dbcReport1——dbcReport4(combobox),对“专业院系视图”(字段:“培养层次”“院系名称”“专业名称”“班级名称”)进行绑定,在load事件里让dbcreport1装入“培养层次”的记录,在dbcreport1的cmbReport1_LostFocus事件里对选定的dbcreport1.text在视图里筛选,只把符合他的院系名称绑入dbcreport2。
代码如下:(调试错误)——————谁能给解决一下,谢谢!
Dim rstcmb1 As ADODB.Recordset
Dim cmdcmb1 As ADODB.Command
Function loadcombobox1(ByVal sqltext As String) As ADODB.Recordset '为每个窗体的第一个combobox提供数据源
Set rstcmb1 = New ADODB.Recordset
With rstcmb1
    .CursorLocation = adUseClient
    .CursorType = adOpenStatic
    .LockType = adLockReadOnly
    .Open sqltext, string1
End With
Set loadcombobox1 = rstcmb1
End Function
Public Function string1() As String
string1 = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=maxin;Password=1202;Initial Catalog=Std_Conduct;Data Source=KJZX4"
End Function
Function loadcombobox2(ByVal sqltext As String) As ADODB.Command
Dim cnncmd1 As ADODB.Connection
Set cnncmd1 = New ADODB.Connection
With cnncmd1
    .CursorLocation = adUseClient
    .Open string1
End With
With cmdcmb1.ActiveConnection = cnncmd1
With cmdcmb1
    .CommandText = "select 院系名称 from 专业院系视图 where 培养层次=" & cmbReport1.Text & ""
    .CommandType = adCmdText
End With
Set parm = cmdcmb1.CreateParameter("培养层次", adVarChar, adParamInputOutput)
cmdcmb1.Parameters.Append parm
Set loadcombobox2 = cmdcmb1
End Function
Private Sub Form_Load()
Dim i As Integer
Dim sqltext As String
Dim rstcmb1 As New ADODB.Recordset
sqltext = "select distinct 培养层次 from 专业院系视图 group  by 培养层次"
Set rstcmb1 = loadcombobox1(sqltext)
If rstcmb1.RecordCount <> 0 Then
    rstcmb1.MoveFirst
    For i = 0 To rstcmb1.RecordCount - 1
      cmbReport1.AddItem Trim(rstcmb1.Fields(0).Value)
      rstcmb1.MoveNext
    Next
Else
    GoTo error
End If
cmbReport1.Text = cmbReport1.List(0)
Set rstcmb1 = Nothing
error:
  MsgBox "请先输入信息!", vbOKOnly + vbExclamation, "警告!"
End Sub
Private Sub cmbReport1_LostFocus()
Dim rst2 As ADODB.Recordset
Dim i As Integer
Set rst2 = New ADODB.Recordset  '创建局部recordset对象
Set rst2 = loadcombobox2("%" & cmbReport1.Text & "%")
If rst2.RecordCount <> 0 Then
    rst2.MoveFirst
    For i = 0 To rst2.RecordCount - 1
      cmbReport2.AddItem Trim(rst2.Fields(0).Value)
      rst2.MoveNext
    Next
End If
End Sub

解决方案 »

  1.   

    With cmdcmb1.ActiveConnection = cnncmd1  错误提示:with对象必须为用户定义类型、对象或变体
      

  2.   

    引用了 大姐  就是在绑定ADO.COMMAND时候出现的错误  帮忙看看!谢谢
      

  3.   

    又改了一段代码,用recordset实现,功能也是根据选择的cmbReport1.text内容,筛选后将符合条件的记录送入cmbReport2.AddItem,代码如下:
    Private Sub cmbReport1_LostFocus()
    Dim rstcmb1 As ADODB.Recordset
    Dim i As Integer
    Set rstcmb1 = New ADODB.Recordset  '创建局部recordset对象
    'Set rst2 = loadcombobox2("%" & cmbReport1.Text & "%")
    'If rst2.RecordCount <> 0 Then
    '    rst2.MoveFirst
    '    For i = 0 To rst2.RecordCount - 1
    '      cmbReport2.AddItem Trim(rst2.Fields(0).Value)
    '      rst2.MoveNext
    '    Next
    'End If
    Dim sqltext As String
    sqltext = "select distinct 院系名称 from 专业院系视图 where 培养层次=" & cmbReport1.Text & " group by 院系名称"
    Set rstcmb1 = loadcombobox1(sqltext)
    If rstcmb1.RecordCount <> 0 Then
        rstcmb1.MoveFirst
        For i = 0 To rstcmb1.RecordCount - 1
          cmbReport2.AddItem Trim(rstcmb1.Fields(0).Value)
          rstcmb1.MoveNext
        Next
        cmbReport2.Text = cmbReport2.List(0)
    End If
    Set rstcmb1 = Nothing
    End Sub但出现问题提示:列名普通中专无效  (普通中专为培养层次这个字段的一个记录)哪位大虾能给解决一下,在线等,急!!!!!!
      

  4.   

    set cmdcmb1.ActiveConnection = cnncmd1
      

  5.   

    .CommandText = "select 院系名称 from 专业院系视图 where 培养层次=" & cmbReport1.Text & ""
    With cmdcmb1.ActiveConnection = cnncmd1
    没有end with