Sql server 是否可以将访问表单连接到SQL Server视图
我正在将Access DB迁移到SQL Server,一切都进展缓慢,但我不确定如何将Access窗体连接到SQL Server视图 到目前为止,我已经将所有表链接到SQLServer,我正在将Access查询迁移到视图中,但是我遇到了一个错误,A2SS0069:无法转换外部变量 其中引用了我的Access文件中的表单:Sql server 是否可以将访问表单连接到SQL Server视图,sql-server,ms-access,Sql Server,Ms Access,我正在将Access DB迁移到SQL Server,一切都进展缓慢,但我不确定如何将Access窗体连接到SQL Server视图 到目前为止,我已经将所有表链接到SQLServer,我正在将Access查询迁移到视图中,但是我遇到了一个错误,A2SS0069:无法转换外部变量 其中引用了我的Access文件中的表单: SELECT TOP 9223372036854775807 WITH TIES [AcuteHospitals].[NHSN_ID], [Ac
SELECT TOP 9223372036854775807 WITH TIES
[AcuteHospitals].[NHSN_ID],
[AcuteHospitals].[HospitalName],
[Location_LOV].[Description] AS Location,
Sum([RateTable_CLABData].[clabcount]) AS [Number of CLABSI],
Sum([RateTable_CLABData].[numcldays]) AS [Central Line Days],
[RateTable_CLABData].[CLAB_Mean] AS [National Average]
FROM
(([AcuteHospitals]
LEFT JOIN [RateTable_CLABData]
ON [AcuteHospitals].[NHSN_ID] = [RateTable_CLABData].[orgID])
LEFT JOIN [Location_LOV]
ON [RateTable_CLABData].[loccdc] = [Location_LOV].[CDCLoc])
LEFT JOIN [SummaryYQ_LOV]
ON [RateTable_CLABData].[summaryYQ] = [SummaryYQ_LOV].[StartDate]
WHERE ((([SummaryYQ_LOV].[SummaryYQ]) = forms!YQ_Location.text5 ))
GROUP BY
[AcuteHospitals].[NHSN_ID],
[AcuteHospitals].[HospitalName],
[Location_LOV].[Description],
[RateTable_CLABData].[CLAB_Mean],
[RateTable_CLABData].[loccdc]
HAVING ((([RateTable_CLABData].[loccdc]) NOT LIKE '%ped%'))
ORDER BY [AcuteHospitals].[HospitalName], [RateTable_CLABData].[loccdc]
这是[SummaryYQ_LOV].[SummaryYQ]=形成的线条!YQ_Location.text5
因此,我需要知道这是否可能,以及如何让这个新视图与访问表单连接。问题就在这里
其中[SummaryYQ_LOV].[SummaryYQ]=表单!YQ_Location.text5
您不能将这样的Access查询转换为SQL视图,但可以改为使用并从字段表单传递值!YQ_Location.text5作为参数
此外,您不需要这个带有领带的TOP 9223372036854775807,它是多余的。您不能直接在SQL视图中引用访问表单。你需要重新思考一下这其中的逻辑。您可以使用硬编码的适当值创建多个视图,或者将视图转换为,并将值作为传递 例如,假设参数是字符串:
create proc s_MyStoredProc
@Location varchar(50)
AS
BEGIN
SELECT
[AcuteHospitals].[NHSN_ID],
[AcuteHospitals].[HospitalName],
[Location_LOV].[Description] AS Location,
Sum([RateTable_CLABData].[clabcount]) AS [Number of CLABSI],
Sum([RateTable_CLABData].[numcldays]) AS [Central Line Days],
[RateTable_CLABData].[CLAB_Mean] AS [National Average]
FROM
(([AcuteHospitals]
LEFT JOIN [RateTable_CLABData]
ON [AcuteHospitals].[NHSN_ID] = [RateTable_CLABData].[orgID])
LEFT JOIN [Location_LOV]
ON [RateTable_CLABData].[loccdc] = [Location_LOV].[CDCLoc])
LEFT JOIN [SummaryYQ_LOV]
ON [RateTable_CLABData].[summaryYQ] = [SummaryYQ_LOV].[StartDate]
WHERE ((([SummaryYQ_LOV].[SummaryYQ]) = @Location ))
GROUP BY
[AcuteHospitals].[NHSN_ID],
[AcuteHospitals].[HospitalName],
[Location_LOV].[Description],
[RateTable_CLABData].[CLAB_Mean],
[RateTable_CLABData].[loccdc]
HAVING ((([RateTable_CLABData].[loccdc]) NOT LIKE '%ped%'))
ORDER BY [AcuteHospitals].[HospitalName], [RateTable_CLABData].[loccdc]
END
SQL Server提供了一个优秀的免费MS访问MS-SQL迁移工具。它在转换MS Access查询方面做得非常好。我还没有尝试过用表单参数转换查询,但这确实值得一看,您也可以学到一些东西,特别是如果您计划转换其他查询 只需创建SQL server视图,然后从Access字体结束链接到该视图。这很容易,不需要做很多工作 至于参数呢?只需从查询和视图中删除它们。然后使用Access客户端的where子句打开报告
事实上,使用绑定到链接表或在本例中为视图的Access窗体或报表很容易,Access只会下拉您在open form或open report命令的where子句中指定的REOCRD。9223372036854775807是一个大数字……是的,这个数字正是SSMA在尝试转换它时给出的。您不知道如何构建存储过程,是吗?我第一次看到这些东西。。。