电解?
Set rs = Nothing
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs.Open "select * from " + STR_SQL_FIELD + " where 发布中心='" + str_text(1) + "'and 发布时间='" + str_text(2) + "'and TC本科编号='" + str_text(3) + "' and id=1 ", cn
For j = 1 To int_sum
If str_text(j) <> "9999" Then rs!str_name(j) = str_text(j)
Next
rs.Update
rs.Close
数据写不进去?
我是要把一条记录写到SQL数据库里,如果是新记录ADDNEW写进去了,但如果记录已存在,我要覆盖它,上面语句写不进去,急!
Set rs = Nothing
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs.Open "select * from " + STR_SQL_FIELD + " where 发布中心='" + str_text(1) + "'and 发布时间='" + str_text(2) + "'and TC本科编号='" + str_text(3) + "' and id=1 ", cn
For j = 1 To int_sum
If str_text(j) <> "9999" Then rs!str_name(j) = str_text(j)
Next
rs.Update
rs.Close
数据写不进去?
我是要把一条记录写到SQL数据库里,如果是新记录ADDNEW写进去了,但如果记录已存在,我要覆盖它,上面语句写不进去,急!
解决方案 »
- 为什么INSERT INTO 向ACESS一次插入两条数据(新手上路)请多多指教
- 如何获取DELL电脑主机型号?
- 为什么我用代码打开WORD之后再关闭,总会产生隐藏文件,而且关闭WORD后也存在
- 求助! VB操作需要用户名验证的计算机上的文件
- 如何用局域网内的一台电脑作为SQL服务器来使用?谢谢!
- vb高手帮忙---vb程序中如何用代码设定数据库只读!
- listbox的一个问题
- 如何用vb连接在Internet服务器上的数据库
- 请教关于付值的问题???
- 帮忙看看数据连接模块的问题
- 为什么我编的VB程序的启动画面不能正常显示,只显示了边框,其它都是透明的?
- 关于多个系统调用一个ocx控件出错的问题,请问
Set rs = Nothing
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs.Open "select * from " + STR_SQL_FIELD + " where 地点= '" + str_text(1) + " 'and 时间= '" + str_text(2) + " 'and 号码= '" + str_text(3) + " ' and id=1 ", cn
For j = 1 To int_sum
rs!str_name(j) = str_text(j)
Next
rs.Update
rs.Close
数据写不进去?
我是要把一条记录写到SQL数据库里,如果是新记录ADDNEW写进去了,但如果记录已存在,我要覆盖它,上面语句写不进去,急!
如何确定一条记录?
如果这一句话存在,不就把rs指向一个空地址了吗?
后面的代码难道不提示“对象或者变量名未设置”之类的错误?
Set rs = Nothing
之后
set rs=new adodb.Recordset
改成
if rs.state=1 then
rs.close
Set rs = Nothing
endif
Set rs = Nothing
修改为:
Set rs = new adodb.recordset如果一定要清除原来数据
可以
if not rs is nothing then
if rs.state<>0 then
rs.close
end if
set rs=nothing
end if还有,建议在连接string的时候,使用&而不是+
If str_text(j) < > "9999" Then rs!str_name(j) = str_text(j)
Next 还有,
这里你需要考虑rs的容量,是不是有int_sum那么多
否则会出错
最好做一个判断
处理ACCESS数据库就很简单,直接EDIT后,再UPDATE就行,但SQL数据库不行,我就先DELETE后再ADDNEW才行。set rs=new adodb.Recordset是增加一个新记录,但我是要把同样的旧记录覆盖,因为数据库已有了一条或多条记录,我要删除的,然后再写一条同样的记录。能不能不用删除旧记录,直接把新的覆盖它。
对数据库多条数据更新一般要采用:Do while not rs.eof
rs.field(i)=****
rs.update
rs.mowenext
loop你的语句看不太明白,采用ado和DAO是有一定的区别的,如果是DAO,在 rs.field(i)=****之前要增加rs.edit语句,如果是ADO就不必了。
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)If Rs.State <> adStateClosed Then Rs.Close
CopyMemory Rs, 0&, 4 '清空Rs(等同与Set Rs=Nothing,不过比它快)
Set Rs = New Recordset
Rs.Open "SELECT * FROM " & STR_SQL_FIELD & " WHERE 地点='" & str_text(1) & "' AND 时间='" & str_text(2) & "' AND 号码='" & str_text(3) & "' AND id=1", cn, adOpenKeyset, adLockOptimistic
If Rs.EOF Then Rs.Addnew '判断数据库中记录是否存在,如果不存在,则新增(Addnew),如果存在,则直接覆盖(注意:自动编号类型的列是不能覆盖的,会出错)
For j = i To int_sum
Rs!str_name(j) = str_text(j)
Next j
Rs.Update
Rs.Close