这是我保存数据的代码,因为我是程序调用这个代码,所以有时候可能多次调用,这样就可能一条数据多次保存,问下大家能不能在保存前,先判断,如果是相同的数据就保存一条阿?
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
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
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
然后
conn.open connectionstring
至于connectionstring,你可以去查到合适的连接字符串
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
'打开连接
我写了几个使用ADO对象操作数据库的代码,我自己经常用。给你看看
http://download.csdn.net/source/1498324你看你就是做工控的,如果愿意,可以和我交流一下:我的QQ:18037803
用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
if rec.recordcount <=0 then
对,用:if rec.eof then
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这句表黄了,程序也不能应用了。请问这是什么问题啊?
主机编号是什么类别的呢?
时间是什么类别的呢?试用F8,或debug.print 来调试程序吧!..............
试试看 加上转换类型 cdate()
因为文本框默认的一般可是字符型