这是我保存数据的代码,因为我是程序调用这个代码,所以有时候可能多次调用,这样就可能一条数据多次保存,问下大家能不能在保存前,先判断,如果是相同的数据就保存一条阿?
Private Sub Command2_Click()
Dim sql As String
sql = "select * from 检测台上传数据 "
Adodc1.Refresh
Adodc1.Recordset.AddNew                        '将文本框中用户输入的各个字段取值填入相应的字段
Adodc1.Recordset.Fields("日期") = Text2.Text
Adodc1.Recordset.Fields("主机编号") = Text4.Text
Adodc1.Recordset.Fields("时间") = Text3.Text
Adodc1.Recordset.Fields("静态电流") = Text5.Text
Adodc1.Recordset.Fields("传输电流") = Text6.Text
Adodc1.Recordset.Fields("排风电流") = Text7.Text
Adodc1.Recordset.Fields("400千帕") = Text8.Text
Adodc1.Recordset.Fields("闪光标志") = Text9.Text
Adodc1.Recordset.Fields("500千帕") = Text10.Text
Adodc1.Recordset.Fields("排风时间") = Text13.Text
Adodc1.Recordset.Fields("600千帕") = Text11.Text
Adodc1.Recordset.Fields("天线辐射") = Text14.Text
Adodc1.Recordset.Fields("检测结果") = Text12.Text
Adodc1.Recordset.Fields("检测台编号") = Text15.Text
Adodc1.Recordset.Update
Adodc1.Refresh
End Sub

解决方案 »

  1.   

    Adodc1这东东没用过但
    sql = "select * from 检测台上传数据 where 主机编号='"& Text4.Text  &"' and 时间='"& Text3.Text &"'"
    我想同一主机编号,同一时间应该只需要一条记录吧!dim d as new ado.recordset
    d.open sql,conn
    if d.eof and d.eof then '不存在,新增endif
      

  2.   

    ls的朋友,我SQ语句不熟,我昨天使用类似这样句d.open sql,conn 。 系统说我没定义,然后conn就标成黄色的了,麻烦能给讲下吗?
      

  3.   

    dim conn as new connection
    然后
    conn.open connectionstring
    至于connectionstring,你可以去查到合适的连接字符串
      

  4.   

    Public rs As ADODB.Recordset
    Public cnn As ADODB.Connection
    Public ServerName As String
    '服务器名
    Public DBname As String
    '数据库名
    Public UserName As String
    '用户名
    Public PassWord As String
    '密码
    'Public Function IniDB() As Boolean
    '初始化连接函数
    'IniDB = False
    Set cnn = New ADODB.Connection
    With cnn
    .connectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" & UserName & ";PWD=" & PassWord & ";Initial Catalog=" & DBname & ";Data Source=" & ServerName
    '连接字符串
    .CommandTimeout = 10
    '连接等待时间
    .CursorLocation = adUseClient
    '游标类型
    .Open
    '打开连接
      

  5.   

    呵呵,优势你啊 巴乔,
    我写了几个使用ADO对象操作数据库的代码,我自己经常用。给你看看
    http://download.csdn.net/source/1498324你看你就是做工控的,如果愿意,可以和我交流一下:我的QQ:18037803
      

  6.   

    不喜欢用ADODC
    用ADO最好。不过要先在引用里引用Microsoft Activex Data Objects 2.x Library
    然后在程序里写:
    Dim conn As New ADODB.Connection
    Dim rec As New ADODB.Recordset
    Dim sql As String: Dim connsql As String
    connsql = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\bingli.mdb;"
    sql = "select * from 表名 where 查询字段="" "
    conn.Open connsql
    rec.Open sql, connsql, adOpenStatic, adLockOptimistic
    if rec.recordcount<=0 then
       Dim rec1 As New ADODB.Recordset
       Dim sql1 As String
       sql1 = "insert into 表名(字段) values(字段值)"
       rec1.Open sql, connsql, adOpenStatic, adLockOptimistic
    end if
      

  7.   

    别用这个
    if rec.recordcount <=0 then 
      

  8.   


    对,用:if rec.eof then
      

  9.   

    Dim sql As String
    Dim d As New adodb.Recordset
    sql = "select * from 检测台上传数据 where 主机编号='" & Text4.Text & "' and 时间='" & Text3.Text & "'and 日期='" & Text2.Text & "'"d.Open sql, conn
    If d.EOF And d.EOF Then '不存在,新增
    Adodc1.Refresh
    Adodc1.Recordset.AddNew                        '将文本框中用户输入的各个字段取值填入相应的字段
    Adodc1.Recordset.Fields("日期") = Text2.Text & "-" & Text23.Text & "-" & Text24.Text
    Adodc1.Recordset.Fields("主机编号") = Text4.Text
    Adodc1.Recordset.Fields("时间") = Text3.Text
    Adodc1.Recordset.Fields("静态电流") = Text5.Text
    上边是我根据ls的朋友给的代码我更改的,但是如果我人为给保存两条一样的数据,结果第二条数据时系统说:实时错误“-2147217913(80040e07)”标准表达式中数据类型不匹配。 结果d.Open sql, conn这句表黄了,程序也不能应用了。请问这是什么问题啊?
      

  10.   

    数据类型!
    主机编号是什么类别的呢?
    时间是什么类别的呢?试用F8,或debug.print 来调试程序吧!..............
      

  11.   

    cqq_chen还在看贴子吗?如果数据类型一个是日期型的,剩下的是文本型的,这样是不不能这么用阿?
      

  12.   


    试试看 加上转换类型 cdate()
    因为文本框默认的一般可是字符型
      

  13.   

    如果对于输入时间,还需要进行转换很头疼的话,可以试试看 控件DTPicker , 可以直接进行日期选择和时间的输入