Dim strSQL As String
    Dim cnn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    rs.LockType = adLockOptimistic
    rs.CursorType = adOpenKeyset
    cnn.CursorLocation = adUseClient
    cnn.ConnectionString = connstr
    cnn.Open
    rs.Open "SELECT * FROM to_repeat where yz_data='" & Text1.Text & "' ", cnn
    If rs.EOF = False Then
        msgbox "已经存在该数据!"      
    Else
         rs.AddNew
         With rs
            .Fields("yz_data") = Text1.Text
            .Update
         End With
         Text1.Text = ""
     End If
    cnn.Close
我用这样的方式来检查数据库里面数据的重复问题,但是出现的问题是数据库里面的数据达到几百万条,所以影响到数据问题了,请高手指教用什么方式来实现同样的功能不影响速度!谢谢

解决方案 »

  1.   

    把ID字段设置为唯一、让数据库内部的机制去做判断,ID字段值可以使用序列来完成。
    Public Function NewChangeSave()
        Dim SaveSql As String
        Dim SaveCommand As New command    
    On Error GoTo eNext:
        SaveSql = "insert into iqms.ia_002_tabmodulespowerchange" + _
            "(id, serialnumber, b_pamx, a_pamx,c_user,c_date,c_reason) Values" + _
            "(S_IA_002_TABMODULESPOWERCHANGE.NEXTVAL,'" + Trim(strModulesSn) + "'," + Trim(douBPamxValue) + "," + Trim(txtChangedPower) + "," + _
            "'" + Trim(txtChangeUser) + "',TO_DATE('" + Format(txtChangeDate, "yyyy-mm-dd hh:mm:ss") + "', 'YYYY-MM-DD HH24:MI:SS'),'" + _
            Trim(txtChangeReason) + "')"
                    
            SaveCommand.ActiveConnection = Conn
            SaveCommand.CommandType = adCmdText
            SaveCommand.CommandText = SaveSql
            SaveCommand.Execute
            
            Exit Function
    eNext:
            MsgBox Err.Description, vbCritical, Err.Number
            
    End Function图示:
    http://hi.erp100.com/data/attachment/album/201008/22/212113pms44m55gnm7n57k.jpg