我要往一个
Private Sub Form_Load()
'''''''''''''''连接并打开数据库的代码
end sub
Private Sub Text1_Change()
MYSTR="select mnmb from MaterialInfo where mnmb like '%" & Text1.Text & "%'"
往combo1中添加MYSTR
以后不会写了
......
End Sub
我要实现的功能是:根据输入的内容,列举相近的内容供选择(象IE一样)

解决方案 »

  1.   

    给你如下的代码:
    Dim rstTemp As New ADODB.Recordset
    Dim conn As New ADODB.Connection
    Dim MYSTR As String
    conn.ConnectionString = "driver={sql server};server=localhost;uid=sa;pwd=;database=test"
    conn.Open
    MYSTR="select mnmb from MaterialInfo where mnmb like '%" & Text1.Text & "%'"
    Set rstTemp = conn.execute(MYSTR, , adcmdtext)
        Combo1.Clear
        Combo1.Text = rstTemp(0)
    If rstTemp.BOF And rstTemp.EOF Then
        Exit Sub
    Else
        Do Until rstTemp.EOF
           Combo1.AddItem rstTemp(0)
           rstTemp.Movenext
        Loop
    End If
      

  2.   

    thank you very much!
    里面有一个错误的处理再问:就是当输入的内容在record中没有记录的时候,就会出现如下的警告:BOF或EOF中有一个是真,或者当前的记录已被删除,所需操作要求有一个当前记录.
    我的代码是这样写的
    Private Sub text1_Change()
    Combo1.Visible = True
    If Not Text1.Text = "" Then
       rs = "select mnmb from MaterialInfo where mnmb like '%" & Text1.Text & "%'"
       Set strsa = conn.Execute(rs, , adCmdText)
       'strsa.Open rs, conn, adOpenKeyset, adLockOptimistic
        End If
        Combo1.Clear
        Combo1.Text = strsa(0)
        
    If strsa.BOF And strsa.EOF Then
        Exit Sub
    Else
        Do Until strsa.EOF
           Combo1.AddItem strsa(0)
           strsa.MoveNext
        Loop
    End If
      

  3.   

    少了一句Private Sub text1_Change()
    Combo1.Visible = True
    If Not Text1.Text = "" Then
       rs = "select mnmb from MaterialInfo where mnmb like '%" & Text1.Text & "%'"
       Set strsa = conn.Execute(rs, , adCmdText)
       'strsa.Open rs, conn, adOpenKeyset, adLockOptimistic
        End If
        Combo1.Clear
        Combo1.Text = strsa(0)
        
    If strsa.BOF And strsa.EOF Then
        Exit Sub
    Else
        strsa.movefrist
        Do Until strsa.EOF
           Combo1.AddItem strsa(0)
           strsa.MoveNext
        Loop
    End If
      

  4.   

    代码中我做了修改,现在应该没有问题了。。提示那个错误,是由于Combo1.Text = strsa(0)
    这句话,在If strsa.BOF And strsa.EOF Then之前执行了,如果返回的结果集为EOF或BOF的话就会出错了。现在应该OK了Private Sub text1_Change()
    Combo1.Visible = True
    If Not Text1.Text = "" Then
       rs = "select mnmb from MaterialInfo where mnmb like '%" & Text1.Text & "%'"
       Set strsa = conn.Execute(rs, , adCmdText)
       'strsa.Open rs, conn, adOpenKeyset, adLockOptimistic
        End If
        Combo1.Clear
            
    If strsa.BOF And strsa.EOF Then
        Exit Sub
    Else
        strsa.movefrist
        Combo1.Text = strsa(0)
        Do Until strsa.EOF
           Combo1.AddItem strsa(0)
           strsa.MoveNext
        Loop
    End If