Office中国论坛/Access中国论坛

标题: 自定义函数中如何引用表中字段的问题 [打印本页]

作者: enimo    时间: 2006-2-12 00:11
标题: 自定义函数中如何引用表中字段的问题
大家好,我想请问一下,我新建了一个函数用在查询在调用,其中需要在函数中引用数据表上的字段,直接引用的话系统提示找不到相应的字段,后面到群里面问过才知道系统不支持在函数中引用表中的字段,只支持引用窗体或报表中的字段,之后了解到通过Dlookup可以解决这个问题,可是问题在于如果不加条件的话Dlookup只能返回一条记录,可我希望返回整个引用的字段,但我不知道这个条件应该怎么写,所以就把文件上传上来,大家帮忙看看解决,谢谢大家!

附:函数存放在模块2中,引用则是在查询表《成本核算查询》中20051、20061、20071三个表达式中。

附二:函数代码:

Public Function yearstemp(tempperiod As Integer)
Dim a, b, c, d As Date
a = DLookup("[设定日期]", "设定日期")
b = DLookup("[(stop)期款日期]", "成本核算数据")
'c = DLookup("[设定日期]", "设后面把函数里要用到的字段统一改成了从表中引定日期")
d = DLookup("[(start)期款日期]", "成本核算数据")
Debug.Print a, b


    If Year(a) > tempperiod Or a > b Or Year(b) < tempperiod Then
        yearstemp = 0
        ElseIf Year(a) = tempperiod And Year(b) = tempperiod Then
            yearstemp = Month(b) - Month(a) + 1
        ElseIf Year(a) = tempperiod And a <= d Then
            yearstemp = 13 - Month(d)
        ElseIf Year(a) = tempperiod And a > d Then
            yearstemp = 13 - Month(a)
        ElseIf Year(a) < tempperiod And Year(b) = tempperiod Then
            yearstemp = Month(b)
        Else
        yearstemp = 12
    End If
   
End Function


函数 表[attach]15755[/attach]

作者: fan0217    时间: 2006-2-12 05:44
使用ADO或DAO
作者: enimo    时间: 2006-2-13 16:56
那是不是用函数本身不能达到要求,可是要用Ado或DAO来搞的话,我对Access认识不深,自己还无法独立完成,可否帮忙适当修改一下,谢谢
作者: enimo    时间: 2006-2-13 18:56
大家好,我找了找资料,写了一段代码,代码能返回我要的字段了,可是怎么和上一段代码结合起来呢,大家帮帮忙看看,谢谢

Sub oprecordset()
On Error GoTo except
Dim recordset As New ADODB.recordset
recordset.Open "成本核算查询", CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly, adCmdTableDirect
Do Until recordset.EOF
Debug.Print recordset![设定日期], recordset![(start)期款日期]
recordset.MoveNext
Loop
recordset.Clone
Set recordset = Nothing
Exit Sub
except:
MsgBox Err.Description, vbCritical

End Sub

作者: enimo    时间: 2006-2-14 19:19
怎么没人知道吗
作者: enimo    时间: 2006-2-15 17:01
谢谢大家的关注,问题已经解决




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