MS Access使用SQL函数创建表单
大家下午好 我很沮丧,因为我从视觉上知道我想要什么,但我无法让它在MS Access中工作。我在SQL server中有一个函数,需要在MS Access中使用。我试着翻译,但没有成功。最终发现你需要一张空白表格,添加了一个文本框,但现在真正的困难来了;我需要一个钮扣MS Access使用SQL函数创建表单,sql,sql-server,ms-access,Sql,Sql Server,Ms Access,大家下午好 我很沮丧,因为我从视觉上知道我想要什么,但我无法让它在MS Access中工作。我在SQL server中有一个函数,需要在MS Access中使用。我试着翻译,但没有成功。最终发现你需要一张空白表格,添加了一个文本框,但现在真正的困难来了;我需要一个钮扣 CREATE FUNCTION fnFietsAantDagenPerJaar ( @Jaar AS int ) RETURNS TABLE AS
CREATE FUNCTION fnFietsAantDagenPerJaar
(
@Jaar AS int
)
RETURNS TABLE
AS
RETURN
SELECT f.Fiets_id, f.Fiets_Type, SUM(DATEDIFF(DAY, h.Huurovereenkomst_Begin_datum, h.Huurovereenkomst_Eind_datum)) AantalDagen
FROM Fiets f
INNER JOIN HuurovereenkomstFiets hf
ON hf.HuurovereenkomstFiets_Fiets_id = f.Fiets_id
INNER JOIN Huurovereenkomst h
ON h.Huurovereenkomst_id = hf.HuurovereenkomstFiets_Huurovereenkomst_id
WHERE YEAR(h.Huurovereenkomst_Begin_datum) = @Jaar AND YEAR(h.Huurovereenkomst_Eind_datum) = @Jaar
GROUP BY f.Fiets_id, f.Fiets_Type
GO
这是我的SQL函数,它可以工作。
现在我想要一张MS Access表单,上面写着:
<Year> [Enter]
其中,年份是一个文本框,输入按钮应执行带有年份变量的功能。
有人能帮我吗?试试:
PARAMETERS Jaar Integer;
SELECT
f.Fiets_id,
f.Fiets_Type,
SUM(DateDiff("d", h.Huurovereenkomst_Begin_datum, h.Huurovereenkomst_Eind_datum)) AS AantalDagen
FROM
Fiets AS f
INNER JOIN HuurovereenkomstFiets AS hf
ON hf.HuurovereenkomstFiets_Fiets_id = f.Fiets_id
INNER JOIN Huurovereenkomst AS h
ON h.Huurovereenkomst_id = hf.HuurovereenkomstFiets_Huurovereenkomst_id
WHERE
Year(h.Huurovereenkomst_Begin_datum) = [Jaar] AND
Year(h.Huurovereenkomst_Eind_datum) = [Jaar]
GROUP BY
f.Fiets_id,
f.Fiets_Type
这可能会很慢,因为Access必须进行全表扫描。如果是,请考虑使用原始SQL创建传递查询。这将被发送到SQL Server并在那里进行处理,并且只返回结果。这是针对SQL Server后端数据库的Access前端,还是将SQL Server代码完全移动到Access中?Access对SQL语言功能的支持严重不足,近20年来基本保持不变,例如Access不支持SQL用户定义函数。没错,它是到服务器的数据链接。我并没有将它完全转移到Access中。这很好,我通过了:SELECT*FROM dbo.fnFietsAantDagenPerJaar。之后,将查询添加到按钮。现在当我按下按钮时,它说我没有值,而我把它放在文本框中。你不能给按钮分配查询。使用DLookup或函数运行查询并返回值。