设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1093|回复: 2
打印 上一主题 下一主题

[其它] 紧急求助------------在线等待!!!!等着马上使用

[复制链接]
跳转到指定楼层
1#
发表于 2003-6-3 22:16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在计算工资时出现了这样一个问题,在客户端输入数据后,经常无法计算,在服务器端则是有时可以有时不行。我的代码是

公用函数       好像strForm总报错,
Public Function GetValue(ID As Long, Num As Long)
    Dim Rs As ADODB.Recordset
    Set Rs = New ADODB.Recordset
    strsql = "[EmployeeID]=" & Forms(strForm).[EmployeeID].Column(0)

sql = "SELECT DISTINCT TOP 2 EmployeeID, InUse, ValidDate, BasicSalary, Floating" _
& "Salary,TotalSalary FROM dbo.tblSalaryData WHERE (InUse <> 0) AND" & strsql & "" _
& "ORDER BY EmployeeID, ValidDate DESC"
Rs.Open sql, CurrentProject.Connection, adOpenDynamic, adLockOptimistic

    If Rs.RecordCount = 0 Then
    '数据源不存在
      Exit Function
    End If
    If Num = 1 Then
       ReS = Rs("BasicSalary")
      
       Else
       If Num = 2 Then
       If Rs.RecordCount = 1 Then
       ReS = Rs("BasicSalary")
       Else
       Rs.MoveNext
       End If
    '在此加入代码,以保证在 RS 只有一条记录时不出错
       ReS = Rs("BasicSalary")
    End If
End If
   GetValue = ReS
End Function
       
同理    GetValue1 = ReS
现有多个窗体需引用该值进行计算

C = GetValue([EmployeeID], 1)
D = GetValue1([EmployeeID], 1)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2003-6-5 03:40:00 | 只看该作者
问题很难吗,还是太简单,大家都不屑于回答?
3#
发表于 2003-6-5 16:49:00 | 只看该作者
简单是简单,大家不回答我想多半是因为一个原因:狗咬刺猬-----无处下嘴:),嘿嘿,毛病太多了。
    这函数"有时候能跑"?不可能的!
    首先,建议你在VBE窗口把选项:要求变量申明开关打开,或直接在每个模块最前加上这句:Option Explicit。这样子你就会知道,你这个函数根本就别指望能跑了:)
    其次:
     一、函数返回值未定义类型,即应该是这样子:
       public function 函数名(参数1 as 类型,参数2 as 类型 ) as 类型
     二、strForm、sq、StrSql这几个变量均未申明
     三、公用函数绝对不要依赖于特定的对象,即你这句:
         strsql = "[employeeid]=" & forms(strform).[employeeid].column(0) 依赖于特定窗体及其对象。
          而应该在调用此函数的窗体中直接当参数传给它,你不是有个根本没用到的参数ID吗?
     四、参数id根本在函数中就没有用到,所以,调用函数的方法也不对.
       五、    if rs.recordcount = 0 then
              '数据源不存在
            exit function
                  end if
            这里即使要中断跳出,也最好给函数赋个值,比如-1,这样子你才能根据函数的返回做出下一个动作或对用户做出提示。比如:
      If GetValue(...)=-1 then  '这时候你知道数据不存在,否则你莫名其妙跳出来,调用它的程序就该感到茫茫然不知所措了:)
     六、其它的依赖于你的具体环境和你想达到的目的了。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-14 20:27 , Processed in 0.100274 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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