设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[Access本身] 为什么总是说未定义函数

[复制链接]
跳转到指定楼层
1#
发表于 2012-2-8 11:37:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码:
Public Function datedistance(a, b)
Dim a, b As Date
If b < a Then
msg "后面日期小于前面日期,请检查取值是否正确"
Else
If Year(a) = Year(b) Then
  If Month(a) = Month(b) Then
    datedistance = Day(b) - Day(a) + 1
    Else
    datedistance = Day(b)
  End If
  Else
datedistance = Day(b)
End If
End If

End Function
-------------------------------------------
Private Sub Command7_Click()
Dim strsql1, strsql2, strsql3, strsql4, strsql5 As String

strsql1 = "UPDATE 宿舍管理 SET 宿舍管理.会计期间 = [Text3]"
strsql2 = "UPDATE 宿舍管理 SET 宿舍管理.应承担天数 = datedistance(宿舍管理.入住日期,宿舍管理.搬离日期)"

doCmd.RunSQL strsql2
End Sub

我觉得第一行已经定义了datedistance这个函数,怎么后面用不了啊
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-2-8 11:54:29 | 只看该作者
发个实例看看能否解决。(在论坛上求解决问题上传附件是最好的方法)
3#
发表于 2012-2-8 11:58:13 | 只看该作者
函数不能在doCmd.RunSQL中执行,你可以在查询中执行
4#
发表于 2012-2-8 14:03:29 | 只看该作者
Public Function datedistance(ByVal a As Date, ByVal b As Date) As Date

If b < a Then
MsgBox "后面日期小于前面日期,请检查取值是否正确"
Else
If Year(a) = Year(b) Then
  If Month(a) = Month(b) Then
    datedistance = Day(b) - Day(a) + 1
    Else
    datedistance = Day(b)
  End If
  Else
datedistance = Day(b)
End If
End If

End Function

点评

vba默认是byvalue吧  发表于 2012-2-8 14:16
5#
发表于 2012-2-8 14:41:25 | 只看该作者
检查一下是否把函数Public Function datedistance(a, b) 放在公用模块?
6#
 楼主| 发表于 2012-2-8 15:14:14 | 只看该作者
Grant 发表于 2012-2-8 11:58
函数不能在doCmd.RunSQL中执行,你可以在查询中执行

在查询中执行也不行呢,一样的报 未定义函数
7#
 楼主| 发表于 2012-2-8 15:14:57 | 只看该作者
yanghua1900363 发表于 2012-2-8 14:41
检查一下是否把函数Public Function datedistance(a, b) 放在公用模块?

放在了“通用”模块里面
8#
 楼主| 发表于 2012-2-8 15:15:43 | 只看该作者
aslxt 发表于 2012-2-8 14:03
Public Function datedistance(ByVal a As Date, ByVal b As Date) As Date

If b < a Then

改了后还是不行
9#
 楼主| 发表于 2012-2-8 15:38:55 | 只看该作者
fnsmydyang 发表于 2012-2-8 11:54
发个实例看看能否解决。(在论坛上求解决问题上传附件是最好的方法)

其实我很想自己摸索前进,但是确实比较费时间,所以还是听君言把实例发上来:

1.我是酒店的工作人员,我想做成这样的效果,工程部把抄表数录入进去,管宿舍的在宿舍管理窗口录入相关的信息,然后生成费用,该扣员工的就扣员工的,该进公司费用的进公司费用。

2.工程抄表计算费用的比较容易做。宿舍的酒纠结了,主要有以下问题:
  2.1 每个员工每月在这个宿舍住了多少天?这就是我发这个贴自定义函数又通不过的原因
  2.2 每个员工都要按住宿舍的天数分摊本宿舍的电费,我用了   “天数/sum(天数)” 可是提示聚合函数在此不能用的提示,这个我一直都搞不懂怎么办,很多其他场合都不会弄
  2.3还有一个动态列的问题,比如:1月要用1月的用量,2月要用2月用量
3.如果现在的模型实在建立的很差,有时间的老师能否建个给我学习学习

4.对于我特别重要的:如何才能系统的、全面的学习ACCESS ?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

10#
发表于 2012-2-8 16:05:25 | 只看该作者
你应该把你的自定义函数放到一个模块中。另外,还有很多问题存在,你继续慢慢调试,有问题再问。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-20 19:45 , Processed in 0.098368 second(s), 38 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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