Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS Access使用SQL函数创建表单_Sql_Sql Server_Ms Access - Fatal编程技术网

MS Access使用SQL函数创建表单

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

大家下午好

我很沮丧,因为我从视觉上知道我想要什么,但我无法让它在MS Access中工作。我在SQL server中有一个函数,需要在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]
其中,年份是一个文本框,输入按钮应执行带有年份变量的功能。 有人能帮我吗?

试试:

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或函数运行查询并返回值。