设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2885|回复: 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-4-2 15:24:04 | 只看该作者
把 strcount = DCount("*", "tbl0", strFrm.Form.sub1.Form.Filter)改成
strcount = DCount("*", "tbl0", strFrm!sub1.Form.Filter)
试下
3#
发表于 2011-4-2 20:45:37 | 只看该作者
简 发表于 2011-4-2 11:04
Private Sub cmdsave_Click()
Dim strFrm As Form
Dim strcount As Integer

strFrm.Form.sub1.Form.Filter改为:
strFrm.controls("sub1").form.filter
也可这样:
set frm=forms("frmCXgr").controls("sub1").form
frm.filter
4#
发表于 2011-4-2 21:40:45 | 只看该作者
简 发表于 2011-4-2 11:04
Private Sub cmdsave_Click()
Dim strFrm As Form
Dim strcount As Integer

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

出现这个点"调试",代码停在哪错哪
5#
 楼主| 发表于 2011-4-4 10:37:48 | 只看该作者
再看看这段代码又错在哪里呢。

我在文本框txthxianxs属性卡上的控件来源中输入:=IIf(Val([txthxian])=0,Null,(Val([txthxian])*Val([txthx0])))
运行成功,显示正确。

因为需要,我将上述表达式放在代码中,代码如下:
Me.txthxianxs.ControlSource = IIf(Val(Me.txthxian) = 0, Null, (Val(Me.txthxian) * val(Me.txtpt0))

结果运行老是失败,错误提示是:无效使用NULL。

这是怎么回事呢,应该怎么改呢。

点击这里给我发消息

6#
发表于 2011-4-4 10:45:13 | 只看该作者
你是要设置控件来源属性还是设置控件值,如果是控件来源应当:
Me.txthxianxs.ControlSource ="= IIf(Val(Me.txthxian) = 0, Null, (Val(Me.txthxian) * val(Me.txtpt0))"
7#
 楼主| 发表于 2011-4-4 10:50:09 | 只看该作者
t小宝 发表于 2011-4-4 10:45
你是要设置控件来源属性还是设置控件值,如果是控件来源应当:
Me.txthxianxs.ControlSource ="= IIf(Val( ...

我是要用代码来设置控件值。

点击这里给我发消息

8#
发表于 2011-4-4 10:52:32 | 只看该作者
Me.txthxianxs= IIf(Val(nz(Me.txthxian)) = 0, Null, (Val(nz(Me.txthxian)) * val(nz(Me.txtpt0)))
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])))"

为什么会这样呢。

点击这里给我发消息

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

本版积分规则

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

GMT+8, 2024-5-24 06:17 , Processed in 0.111783 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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