Office中国论坛/Access中国论坛

标题: 各位朋友,能帮我把以下语句转换为在ADP中用吗? [打印本页]

作者: yodong    时间: 2004-8-3 04:08
标题: 各位朋友,能帮我把以下语句转换为在ADP中用吗?
SELECT 材料收支表.材料ID, Year([日期]) AS 年份, Month([日期]) AS 月份, k([材料ID],Year([日期]),Month([日期])) AS 上月结余, Sum(材料收支表.进库) AS 本月进库, Sum(材料收支表.出库) AS 本月出库

FROM 材料收支表

GROUP BY 材料收支表.材料ID, Year([日期]), Month([日期]), k([材料ID],Year([日期]),Month([日期]))

ORDER BY 材料收支表.材料ID, Year([日期]), Month([日期]);

'==================

在MDB中查询可以放入VBA的函数,在ADP中是不可以的.要直接在SQL中写函数,我想把下面的语句转换成ADP的函数,大家帮忙呀!!





'****************************

'名称:月上期余额示例

'作者:zhengjialon(access-cn and access abc)

'时间:2004-01-30

'****************************

'实现了在一条记录中查询上月余额本月进库和结余的问题

'本例是使用了进出库在一个表中,如果是进库和出库分别为两个表也是一样。

Public Function k(strCodeID As String, lngY As Long, lngM As Long) As Long

    Dim strSQL As String

    Dim rs As Object

    Dim cn As Object

   

    Set cn = Application.CurrentProject.Connection

    Set rs = CreateObject("ADODB.Recordset")

   

    '将材料代码和日期代入到查询条件中去

    strSQL = "SELECT 材料收支表.材料ID, Sum(([进库]-[出库])) AS 库存 " & _

             "FROM 材料收支表 " & _

             "WHERE 材料收支表.日期 < #" & lngM & "/1" & "/" & lngY & "# And 材料ID ='" & strCodeID & "' " & _

             "GROUP BY 材料收支表.材料ID;"

    rs.Open strSQL, cn, 1

   

    If rs.EOF = True Then Exit Function

   

    k = rs("库存")

    'MsgBox k

   

    rs.Close

    Set rs = Nothing

    Set cn = Nothing

End Function

'-------------------------------------上面这个是zhengjialon版主的库存查询示例此下连接可以下载

http://www.office-cn.net/forum.php?mod=viewthread&tid=19200

'===================


作者: lwwvb    时间: 2004-8-3 22:37
可以呀,使用存储过程或用户自定义函数。可惜我现在都不太熟悉。
作者: guotianxin    时间: 2004-8-6 19:24
Create Function fnSql()Returns TableAS Return (SELECT 材料收支表.材料ID, Year([日期]) AS 年份, Month([日期]) AS 月份, k([材料ID],Year([日期]),Month([日期])) AS 上月结余, Sum(材料收支表.进库) AS 本月进库, Sum(材料收支表.出库) AS 本月出库

FROM 材料收支表

GROUP BY 材料收支表.材料ID, Year([日期]), Month([日期]), k([材料ID],Year([日期]),Month([日期]))

ORDER BY 材料收支表.材料ID, Year([日期]), Month([日期]))
作者: yodong    时间: 2004-8-6 20:39
谢谢guotianxin朋友,

不过是不是guotianxin朋友理解错了我的意思呢?

SELECT 材料收支表.材料ID, Year([日期]) AS 年份, Month([日期]) AS 月份, k([材料ID],Year([日期]),Month([日期])) AS 上月结余, Sum(材料收支表.进库) AS 本月进库, Sum(材料收支表.出库) AS 本月出库

FROM 材料收支表

GROUP BY 材料收支表.材料ID, Year([日期]), Month([日期]), k([材料ID],Year([日期]),Month([日期]))

ORDER BY 材料收支表.材料ID, Year([日期]), Month([日期]);

上面是一个MDB中的查询.其中用到在VBA中写的函数  K()

.我的用意是把此VBA的函数K写成在ADP中的函数.

再麻烦一下guotianxin朋友帮我看一下,我相信你是行的.

[此贴子已经被作者于2004-8-6 13:06:14编辑过]






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