您的位置:程序门 -> vb -> 数据库(包含打印,安装,报表)



在ado模更新模式下打开的记录集,为何能够执行,而未能修改记录集?批更新的小疑问...


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


在ado模更新模式下打开的记录集,为何能够执行,而未能修改记录集?批更新的小疑问...
发表于:2007-01-14 11:20:39 楼主
strsql   =   "select   citem   from   "   &   tvwtype.selecteditem.key
set   rsclient   =   new   adodb.recordset
rsclient.open   strsql,   flcon,   adopenkeyset,   adlockbatchoptimistic

with   rsclient
        '插入一些测试数据[addnew]
        .addnew   "citem ",   "a123 "
        .addnew   "citem ",   "b123 "
        .addnew   "citem ",   "c123 "
        .addnew   "citem ",   "d123 "
        .addnew   "citem ",   "e123 "
       
        '删除c123
        .filter   =   "citem= 'c123 ' "
        rsclient.delete
       
        '修改d123
        .filter   =   "citem= 'd123 ' "
        .fields(0)   =   " 'd456 ' "
       
        .updatebatch
end   with

'1.以上代码,能够正常执行且不产生错误,但所有的修改并未影响到记录集..不解!
'2.同时上面的代码中修改指定记录的方法是不是正确的?有否其它合适的方法?
'3.在批更新模式下,要注意哪些问题及常见的要捕获的错误(多用户端的情况下)..?

谢谢各位顶贴回复!
发表于:2007-01-14 11:21:491楼 得分:0
ps:标题文字有错..在ado模更新模式                 变更为                 在ado批更新模式。
发表于:2007-01-14 15:56:242楼 得分:0
帮你顶.来接分了.
发表于:2007-01-14 16:44:323楼 得分:0
经实验,把上面的中修改和删除的部门注释掉,前面的addnew能执行.但无法实现del/update

而使用.updatebatch   adaffectallchapters更新,应可以完全解决。而我上面根本就没有子集啊?哪里有什么问题?
发表于:2007-01-14 22:46:114楼 得分:0
将“adlockbatchoptimistic”改成“adlockoptimistic”试试
发表于:2007-01-15 00:07:225楼 得分:0
错,上面的代码主要就是要实现批更新下的各个子动作的..改成adlockoptimistic岂不是失之东隅.?

上面的情况群里的朋友已经帮解决了..现在存在一个问题,下面的关于   [记录修改]的代码:

rsclient.filter   =   " "
if   cel.text   =   " "   then       '删除
        rsclient.filter   =   "citem= ' "   &   grdlist.activecell.tag   &   " ' "
        rsclient.delete
else                                         '修改
        ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '方法1   遍历查找后更新
        do   until   rsclient.eof
                if   rsclient!citem   =   cel.tag   then
                        rsclient!citem   =   cel.text
                        exit   do
                end   if
                rsclient.movenext
        loop
        ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '方法2   使用filter过滤定位,然后更新
        'rsclient.filter   =   " "
        'rsclient.filter   =   "citem= ' "   &   cel.tag   &   " ' "
        'rsclient!citem   =   cel.text
        ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
end   if
rsclient.updatebatch

方法1能成功更新。
方法2被执行时不提示任何信息,但数据并未更新到。(同时,方法2中若更新前/后的值中包含单引号,将出现提示..错误代码:3001,参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。)

请问,怎样调试方法2,能够在批模式adlockbatchoptimistic下使用filter定位记录并实现更新。

此问解决,50分全送..!!谢谢
发表于:2007-01-15 08:48:076楼 得分:0
建议直接使用   sql   命令实现,不要采用   recordset   循环执行。

flcon.EXECute   "delete   from   "   &   tvwtype.selecteditem.key   &   "   where   citem= ' "   &   grdlist.activecell.tag   &   " ' "

flcon.EXECute   "update   "   &   tvwtype.selecteditem.key   &   "   set   citem   =   ' "   &   cel.text   &   " '   where   citem= ' "   &   cell.tag   &   " ' "
发表于:2007-01-15 09:38:077楼 得分:0
rsclient.filter   =   "citem= ' "   &   replace(cel.tag, " ' ", " ' ' ")   &   " ' "
发表于:2007-01-15 09:39:508楼 得分:0
to   of123...建议直接使用   sql   命令实现,不要采用   recordset   循环执行
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
EXECute方法不能实现对一个记录集的n次更新刷新..
我要的是在批更新模式下操作。实现成批更新...updatebatch
发表于:2007-04-11 11:20:299楼 得分:0
再顶一下..批更新的方式..楼上的回答大多偏题.
发表于:2007-06-10 09:07:5910楼 得分:0
今天准备来结贴...发现回答都不沾边啊..
发表于:2007-06-10 09:22:2011楼 得分:0
呵呵,真没遇到过这样的情况啊


快速检索

最新资讯
热门点击