设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3366|回复: 15
打印 上一主题 下一主题

[窗体] 请问这段代码错在哪里

[复制链接]
跳转到指定楼层
1#
发表于 2011-4-2 11:04:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

Private Sub cmdsave_Click()
Dim strFrm As Form
Dim strcount As Integer
   
        Set strFrm = Forms!frmCXgr

        strcount = DCount("*", "tbl0", strFrm.Form.sub1.Form.Filter)
        if strcount=0 then
          ……
       else
         ……
       endif

        MsgBox strcount

End Sub

我的本义是,在tbl0表中查找满足strFrm.Form.sub1.Form.Filter条件的记录。
如果有满足条件的记录,Dcount的值应该是满足条件的记录数,这些记录进行删除并把strFrm.Form.sub1子窗体中满足条件的记录重新插入tbl0表中;如果没有满足条件的记录,Dcount值应该为0,则直接插入即可。

在调试运行中,当有tbl0中没有满足条件的记录时,弹出的错误提示是:
运行时错误:3464
标准表达式中数据类型不匹配。

我找不到原因,所以请教大家,我的代码错在哪呢,应该怎么修改呢,在此先谢了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
16#
发表于 2011-4-5 05:27:42 | 只看该作者
Null
请参阅
Null 关键字被用来作为 Variant 子类型。它说明变量不包含有效数据。

Dim S as String
Dim I as Integer
Dim V as Variant
S = Null '无效使用Null
I = Null '无效使用Null
V = Null '正确

对于字符串,请使用 vbNullString

点击这里给我发消息

15#
发表于 2011-4-4 23:11:22 | 只看该作者
   
14#
 楼主| 发表于 2011-4-4 21:54:35 | 只看该作者
t小宝 发表于 2011-4-4 20:42
真是糊涂,这样应该可以:
Me.txthxianxs= IIf(Nz(Me.txthxian,0)=0 Or Nz(Me.txthxian,"")="", Null, nz( ...

还是不行,还是提示,类型不匹配。

点击这里给我发消息

13#
发表于 2011-4-4 20:42:28 | 只看该作者
真是糊涂,这样应该可以:
Me.txthxianxs= IIf(Nz(Me.txthxian,0)=0 Or Nz(Me.txthxian,"")="", Null, nz(Me.txthxian,0) * nz(Me.txtpt0,0))
12#
发表于 2011-4-4 15:50:55 | 只看该作者
本帖最后由 todaynew 于 2011-4-4 15:52 编辑
简 发表于 2011-4-4 10:57
上述代码运行还是失败,提示无效使用NULL。

只有用这段代码,运行就正常。


呵呵,可算把小宝同志绕糊涂了。

正解在这里:
使用 ControlSource 属性可以指定在控件中显示的数据。可以显示和编辑绑定到表、查询或 SQL 语句中的数据。还可以显示表达式的结果。String 型,可读/写。

这就是9楼的答案为什么正确的原因所在。


11#
 楼主| 发表于 2011-4-4 11:19:41 | 只看该作者
t小宝 发表于 2011-4-4 11:03
试试:
Me.txthxianxs= IIf(Nz(Me.txthxian,0)=0, Null, nz(Me.txthxian,0) * nz(Me.txtpt0,0))

也不行,错误提示是:类型不匹配。

在窗体中,me.txthxian的值有可能是"",或者是数字。

点击这里给我发消息

10#
发表于 2011-4-4 11:03:32 | 只看该作者
试试:
Me.txthxianxs= IIf(Nz(Me.txthxian,0)=0, Null, nz(Me.txthxian,0) * nz(Me.txtpt0,0))
9#
 楼主| 发表于 2011-4-4 10:57:16 | 只看该作者
t小宝 发表于 2011-4-4 10:52
Me.txthxianxs= IIf(Val(nz(Me.txthxian)) = 0, Null, (Val(nz(Me.txthxian)) * val(nz(Me.txtpt0)))

上述代码运行还是失败,提示无效使用NULL。

只有用这段代码,运行就正常。
Me.txthxianxs.ControlSource = "=IIf(Val([txthxian])=0,Null,(Val([txthxian])*Val([txthx0])))"

为什么会这样呢。

点击这里给我发消息

8#
发表于 2011-4-4 10:52:32 | 只看该作者
Me.txthxianxs= IIf(Val(nz(Me.txthxian)) = 0, Null, (Val(nz(Me.txthxian)) * val(nz(Me.txtpt0)))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-5-20 00:05 , Processed in 0.093488 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表