我在模块里定义了如下代码:
Public Function DataIsExists(ByVal FieldName As String, ByVal TableName As String, ByVal FieldValue As String, ByVal FieldType As String) As Boolean
    Dim rstPackage As ADODB.Recordset
    
    DataIsExists = False
    Set rstPackage = New ADODB.Recordset
    Select Case FieldType
        Case "String"
            rstPackage.Open "Select Top 1 [" & FieldName & "] From [" & TableName & "] Where [" & FieldName & "] = '" & ReplaceSQL(FieldValue) & "'", SystemConn, adOpenStatic, adLockReadOnly, adCmdText
    End Select
    If rstPackage.RecordCount > 0 Then DataIsExists = True
    rstPackage.Close
    Set rstPackage = Nothing
End Function
然后,在窗体里编写了以下代码:
    If SystemConn = 0 Then
         If DataIsExists("Package_ID", "Package_Detail", txtField(0).Text, Data_Str) = True Then
            MsgBox "此ID已存在!", vbOKOnly + vbCritical, "套播广告管理"
            Exit Sub
        End If
    End If我的问题是:为什么不管加入的新记录他的ID是不是已经存在,系统仍然提示,"此ID已存在!"哪里出了问题呢?急....

解决方案 »

  1.   

    你改成直接从表中取数据试下了。写成这样试一下了?
    dim Rs as new adodb.Recordset
    Rs.open"select '字段名'FROM '表名' Where 条件",systemconn ,adOpenStatic, adLockReadOnly, adCmdText
    if rs.RecordCount>0 then 
    msgbox"记录存在!"
    end if 
    把这段代码放到你输入ID的文本框失去焦点事件中。就可以了。
      

  2.   

    楼上这位朋友,我按你的方法:
    Private Sub txtField_LostFocus(Index As Integer)
        Dim rstPackage As New ADODB.Recordset
        
        If SystemState = 0 Then
            Set rstPackage = New ADODB.Recordset
            rstPackage.Open "Select Package_ID From Package_Detail Where Package_ID= ReplaceSQL(txtField(0).text)", SystemConn, adOpenStatic, adLockReadOnly, adCmdText
            If rstPackage.RecordCount > 0 Then
                MsgBox "记录存在!", vbOKOnly + vbCritical + "套播广告管理"
            End If
        End If
        
        rstPackage.Close
        Set rstPackage = Nothing提示错误:"txtfield"不是可识别的函数名...
      

  3.   

    有人吗,我定义了这条代码:
     rstPackage.Open "Select Package_ID From Package_Detail Where Package_ID= '" & Replace(txtField(0).Text, "", "''") & "'", SystemConn, adOpenStatic, adLockReadOnly, adCmdText
        If rstPackage.RecordCount > 0 Then
            MsgBox "记录存在!", vbOKOnly + vbCritical, "套播广告管理"
        End If但是'" & Replace(txtField(0).Text, "", "''") & "'一直没有成功赋值,请问哪里有问题。.我将次代码放在cmdOK_click窗体下...请各位指点...
      

  4.   

    txtField(0).Text这个是什么啊?
    如是字段值的话就rs.field(0)