注册 登录
编程论坛 VB6论坛

求助:输入数据库如何判断条目避免重复?

bleak 发布于 2012-11-06 15:08, 851 次点击
正常可以录入数据,但是遇到相同文本内容的就直接报错退出,现在我参考了一段代码,把它加进来,但是每次添加都报“系统已存在该条记录”,找不出是哪里的原因,请各位帮忙看下了啊!

Private Sub cmdOK_Click()
Dim strSQL2 As String
Dim rs As New ADODB.Recordset
If CheckData() = False Then Exit Sub
      strSQL2 = "INSERT INTO tb_timecard(timecard_id,employee_id,employee_name,timecard_date,timecard_stime,timecard_xtime,timecard_time) "
            strSQL2 = strSQL2 & "VALUES('" & txtTimecardid.Text & "','"    ' kq编号
            strSQL2 = strSQL2 & cmbEmpid.Text & "','" '员工工号
                SQLExt (strSQL2)
            MsgBox "添加成功!", vbInformation + vbOKOnly, "提示"

End Sub

Private Function CheckData() As Boolean
strSQL0 = "SELECT * FROM tb_timecard WHERE timecard_id = '" & Trim(txtTimecardid.Text) & " ' AND timecard_date = # " & DTPickerDate.Value & " # "
       Set bs = QueryExt(strSQL0)
     If bs.RecordCount <> 0 Then
        MsgBox ("系统已存在该条记录,请修改后重试!")   
        CheckData = False
        Exit Function
     End If
    CheckData = True
End Function
6 回复
#2
bleak2012-11-06 15:10
这个SQL语法不知道有没有问题,大家帮忙啊!谢谢啦!!
#3
wxflw2012-11-06 16:35
你的编号是唯一的吧?如果编号是唯一的就查询编号,如果存在该编号那么就提示有这条记录了!
sql = "select * from 表格 where 编号 = 你现在需要存储的信息编号"
#4
bleak2012-11-06 16:39
编号唯一,但是我是在这里Private Function CheckData() As Boolean定义的啊,但是一直这么提示,"系统已存在该条记录,请修改后重试!"就是不管有没有记录都这么提示,晕死了
#5
wxflw2012-11-06 20:34
strSQL0 = "SELECT * FROM tb_timecard WHERE timecard_id = '" & Trim(txtTimecardid.Text) & " ' AND timecard_date = # " & DTPickerDate.Value & " # "
把除了编号以外的查询条件去掉在查询不可以吗?
#6
bleak2012-11-08 08:03
也不行的啊,咋整啊
#7
wxflw2012-11-08 09:10
我自己用的!你参考一下吧!

'自动编号
Set cn = New adodb.Connection
Set rs = New adodb.Recordset
If cn.State = adStateOpen Then cn.Close
If rs.State = adStateOpen Then rs.Close
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\数据库名字;Jet OLEDB:Database Password=密码 "
sql = "select * from 表名 order by 编号 asc"
rs.Open sql, cn, adOpenForwardOnly, adLockBatchOptimistic
If rs.RecordCount > 0 Then
rs.MoveLast
Label37.Caption = Format(Val(rs.Fields("编号")) + 1, "00000000")
Else
Label37.Caption = "10000000"
End If

'下面的是我用过的一段查询代码,估计你能用的上自己改一下
Private Sub Command2_Click()
  If Text2.Text = "" Or Text7.Text = "" Or Text8.Text = "" Then
    MsgBox "请您输入查询条件", 32, "房源管理系统"
     Exit Sub
    Else   
    Set cn = New adodb.Connection
    Set rs = New adodb.Recordset
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\数据库;Jet OLEDB:Database Password=密码 "
    sql = "select * from 表名 where 地址 like '%" & Text2.Text & "%'and 楼号 ='" & (Text7.Text) & "'and 房号 ='" & (Text8.Text) & "'"
    rs.Open sql, cn, adOpenForwardOnly, adLockBatchOptimistic
End If
   If rs.EOF And rs.BOF Then
    MsgBox "没有符合条件的信息,请您确认后重新输入", 32, "房源管理系统"
    Else
    Set MSHFlexGrid3.DataSource = rs
   End If
End Sub





[ 本帖最后由 wxflw 于 2012-11-8 09:18 编辑 ]
1