小弟有个问题请教
我设计了一个下拉菜单,里面输入的是班级号。
我的想法是:当你输入的数据没有的时候,就把这条记录保存下来,要是有的话,就可以在下拉菜单里面去进行选择。
问题也就来了,要怎么进行比较才知道记录到底是否存在。我写的一点代码如下: (就是mrc.后面的不知道是什么)
Dim mrc As ADODB.Recordset1。Private Sub comboClassNo_LostFocus()
    Dim a As String
    a = comboClassNo.Text
    For i = 1 To mrc.RecordCount
       If a <> mrc.Indxe(i) Then
       comboClassNo.AddItem a
       mrc.MoveNext
       End If
    Next i
End Sub2。Private Sub Form_Load()
    '添加内容到列表框中
    For i = 1 To mrc.RecordCount
        comboClassNo.AddItem mrc.Fields(4)
        mrc.MoveNext
    Next iEnd Sub

解决方案 »

  1.   

    如果只是想做到臨時插入也即退出後所插入的值就消失用此法
    Private Sub comboClassNo_KeyDown(KeyCode As Integer, Shift As Integer)
       Dim txt As String
       Dim i As Integer
       Dim BB As Boolean
       
       txt = comboClassNo.Text
       
       If KeyCode = 13 Then
          For i = 0 To comboClassNo.ListCount - 1
              If txt = comboClassNo.List(i) Then
                 BB = True
              End If
          Next
          If BB = False Then
             comboClassNo.AddItem txt
          End If
       End If
    End Sub如果退出後還想保存,則可把資料保存在一文件或資料庫中,在comboClassNo.AddItem txt後加一句保存語句即可
      

  2.   

    mrc.RecordCount就是你的数据库的总记录数~~
    如果你的数据库有10条记录那么它的值就是10~~
    ----------------------------------
    我的想法是:当你输入的数据没有的时候,就把这条记录保存下来,要是有的话,就可以在下拉菜单里面去进行选择。
    -----------------------------------------------
    你可以循环数据库~~逐条记录判断记录中有没有和你输入的数据相同的~~如果没有就保存~~
    或者可以用SQL语句查找判断~~一般的管理软件都较经常用到这样的功能~~
      

  3.   

    Private Declare Function SendMessagebyString Lib _
    "user32" Alias "SendMessageA" (ByVal hWND As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    ByVal lParam As String) As LongPrivate Const CB_FINDSTRINGEXACT = &H158    '在 ComboBox 中精确查找1。Private Sub comboClassNo_LostFocus()
    Dim p As Integer
        p = SendMessagebyString(comboClassNo.hWnd, CB_FINDSTRINGEXACT, -1, comboClassNo.Text)
        If p = -1 Then
           mrc.AddNew
           mrc.Fields(4) = comboClassNo.Text
           mrc.Update
           Form_load
        Else
           comboClassNo.ListIndex = p
        End If
    End Sub2。Private Sub Form_Load()
        '添加内容到列表框中
        mrc.MoveFirst
        comboClassNo.Clear
        Do Until mrc.EOF
            comboClassNo.AddItem mrc.Fields(4)
            mrc.MoveNext
        LoopEnd Sub