Office中国论坛/Access中国论坛

标题: 紧急求助------------在线等待!!!!等着马上使用 [打印本页]

作者: lisashar    时间: 2003-6-3 22:16
标题: 紧急求助------------在线等待!!!!等着马上使用
我在计算工资时出现了这样一个问题,在客户端输入数据后,经常无法计算,在服务器端则是有时可以有时不行。我的代码是

公用函数       好像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)
作者: lisashar    时间: 2003-6-5 03:40
问题很难吗,还是太简单,大家都不屑于回答?
作者: freemanager    时间: 2003-6-5 16:49
简单是简单,大家不回答我想多半是因为一个原因:狗咬刺猬-----无处下嘴:),嘿嘿,毛病太多了。
    这函数"有时候能跑"?不可能的!
    首先,建议你在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  '这时候你知道数据不存在,否则你莫名其妙跳出来,调用它的程序就该感到茫茫然不知所措了:)
     六、其它的依赖于你的具体环境和你想达到的目的了。







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