Office中国论坛/Access中国论坛

标题: 请教如何清空子窗体记录集的某个字段的值? [打印本页]

作者: rjacky    时间: 2007-1-9 17:49
标题: 请教如何清空子窗体记录集的某个字段的值?
如图,数据表形式子窗体里面有数条记录,之前已经请教过可以使用以下代码汇总合计里面"书名"字符串字段的值

Dim strSum As String,rs As Object

Set rs = Me.报价成本登记子窗体.Form.RecordsetClone
rs.MoveFirst
Do Until rs.EOF
strSum = strSum & rs.Fields("书名") & ";"
rs.MoveNext
Loop

Me.书名汇总= strSum
Set rs = Nothing










现在想请教一下,如何用代码清空子窗体里面的这些记录的某个数字字段(如书籍编号)和文本字段(如类别)的内容?





[attach]22457[/attach]














[此贴子已经被作者于2007-1-9 10:39:32编辑过]


作者: 狼书生    时间: 2007-1-9 18:57
方法一:

dim SqlStr as string,Rs as new adodb.recordset

SqlStr="update 存书查询 set 书籍编号=null,类别=null"

set Rs=currentproject.connection.execute(sqlstr)

set RS=nothing

Me.报价成本登记子窗体.requery

方法二:

dim SqlStr as string,Rs as new adodb.recordset

SqlStr="update 存书查询 set 书籍编号=null,类别=null"

docmd.setwarnings false

docmd.runsql sqlstr

docmd.setwarnings true

Me.报价成本登记子窗体.requery
作者: rjacky    时间: 2007-1-9 19:10
谢谢!

方法二是清空整个查询的字段,我只想清空当前子窗体查询结果的字段。

ado我不太懂,请问方法一也是清空整个查询的字段吗?
作者: 狼书生    时间: 2007-1-9 19:45
前面多定义一个字符串变量

dim strwhere as string

在SqlStr="update 存书查询 set 书籍编号=null,类别=null"后面加上条件判断的where 子句

把下面的代码写在SqlStr="update 存书查询 set 书籍编号=null,类别=null"后面

if not isnull(me.书名) then

strwhere="书名='" & me.书名 & "'and "

endif

if not isnull(me.类别) then

strwhere="类别='" & me.类别 & "'and "

endif

if not isnull(me.作者) then

strwhere="作者='" & me.作者 & "'and "

endif

if not isnull(me.出版社) then

strwhere="出版社='" & me.出版社 & "'and "

endif

if len(strwhere)>0 then

strwhere=left(strwhere,len(strwhere)-5)

SqlStr=SqlStr & " from 存书查询 where " & strwhere

endif

[此贴子已经被作者于2007-1-9 11:47:29编辑过]


作者: 狼书生    时间: 2007-1-9 19:46
两种方法作用都一样的[em01]
作者: rjacky    时间: 2007-1-9 20:36
还是多谢你的解答,但是可能你还没有理解我的意思,引用控件的值作为条件这种方法并不是我希望的答案,不然我都不会给出之前操作记录集的代码了,

我希望直接操作子窗体的动态查询记录集,将里面所有记录的"书籍编号"和"类别"字段清空



我试过在原有的代码里面加上红色的部分,但是不成功会提示不能更新数据

Dim strSum As String,rs As Object



Set rs = Me.报价成本登记子窗体.Form.RecordsetClone
rs.MoveFirst
Do Until rs.EOF
strSum = strSum & rs.Fields("书名") & ";"

rs.Fields("书籍编码") =null

rs.Fields("类别")=null


rs.MoveNext
Loop



Me.书名汇总= strSum
Set rs = Nothing

[此贴子已经被作者于2007-1-9 12:40:51编辑过]


作者: Joe5525601    时间: 2007-1-9 20:43
子窗体的数据源是个不可更新的查询.
作者: rjacky    时间: 2007-1-9 21:00
晕,我一时疏忽了,那个只是刘小军查询的例子,查询不可更新

在我的实例里面是可以更新的查询,代码应该怎么样改呢?
作者: Joe5525601    时间: 2007-1-9 22:56
先将查询更改为可更新查询.然后用上次给你的代码(类似写法)循环取得null值.[attach]22543[/attach]





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3