2012-01-06 4 views
0

Access 데이터베이스를 SQL Server로 마이그레이션하고 있지만 모든 것이 천천히 진행되고 있지만 Access 폼을 SQL Server보기에 연결하는 방법을 모르겠습니다. 나는 모든 테이블이 뷰에 액세스 쿼리를 마이그레이션하는 작업 SQL Server 및 임에 연결했지만 필자는이 오류를 가지고 지금까지Access 폼을 SQL Server보기에 연결할 수 있습니까?

, 내 액세스 파일의 양식을 참조 A2SS0069: External variable cannot be converted

:

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] 

그 라인 WHERE ((([SummaryYQ_LOV].[SummaryYQ]) = forms!YQ_Location.text5))

그래서 나는 그것이 가능하고 접근 양식을 연결하는 새로운보기를 얻는 방법을 알고 있어야합니다.

+0

9223372036854775807은 큰 숫자입니다 ...... – Simon

답변

3

문제는 여기 ((([SummaryYQ_LOV]. [SummaryYQ]) = 형태! YQ_Location.text5))

당신은에 같은 Access 쿼리를 변환 할 수 없습니다

입니다 SQL보기를 사용하지만 대신 Stored Procedure을 사용하고 forms!YQ_Location.text5 필드의 값을 매개 변수로 전달할 수 있습니다.

또한이 필요가 없습니다. TOP 9223372036854775807 WITH TIES 중복되어 있습니다.

+0

예. 숫자는 변환 할 때 SSMA가 뱉어 낸 것입니다. 당신은 저장 프로 시저를 만드는 법을 알지 못했습니까? 첫 번째로이 물건을보고있는 Im ... – rugbert

2

SQL보기에서 액세스 양식을 직접 참조 할 수 없습니다. 당신은이 논리를 재고 할 필요가있을 것이다. 적절한 값을 하드 코딩 (권장하지 않음) 한 숫자보기를 만들거나보기를 Stored Procedure으로 변환하고 parameter으로 값을 전달할 수 있습니다.

예를 들어 (매개 변수를 가정하는 것은 문자열) :

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 
0

SQL 서버가 MS-SQL 마이그레이션 도구에 훌륭한 (무료) MS-액세스 할 수 있습니다. 그것은 MS 액세스 쿼리를 변환하는 아주 좋은 일을합니다. 양식 매개 변수를 사용하여 쿼리를 변환하지는 않았지만 다른 쿼리를 변환하려는 경우 특히 유용 할 것입니다. http://www.microsoft.com/sqlserver/en/us/product-info/migration-tool.aspx#oracle.

1

SQL 서버보기를 만든 다음 액세스 글꼴 끝 링크에서 해당보기로 만듭니다. 그것은 쉽지 않고별로 일하지 않습니다.

모든 매개 변수는? 쿼리와 뷰에서이를 제거하면됩니다. 그런 다음 Access 클라이언트의 where 절을 사용하여 보고서를 엽니 다.

실제로 연결된 테이블 (또는이 경우보기)에 바인딩 된 Access 폼이나 보고서를 사용하면 Access에서 열린 폼의 "where"절에서 지정한 reocrds 만 끌어 오거나 보고서 열기 명령.

관련 문제