下午好,
我非常沮丧,因为我在视觉上知道我想要什么,但我无法在MS Access中使用它。我在SQL服务器中有一个功能,我需要在MS Access中使用它。我尝试翻译它,但它没有成功。最终发现你需要一个空白表格,添加一个文本框但现在真正的斗争;我需要一个按钮。
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]
如果年份是文本框,并且输入按钮应该执行年份的功能是可变的。 任何可以让我离开的人?
答案 0 :(得分:1)
尝试:
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并在那里处理,只返回结果。