2012-01-06 19 views
0

AccessデータベースをSQL Serverに移行していますが、すべてが徐々に進んでいますが、AccessフォームをSQL Serverビューに接続する方法がわかりません。AccessフォームをSQL Serverビューに接続することは可能ですか

これまでのところ、私はビューにAccessクエリの移行に取り組んでSQL Serverとイムにリンクされているすべてのテーブルを持っていますが、アイブ氏は、このエラーを得た、私のAccessファイルでフォームを参照する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))

は、だから私はそれが可能だとAccessフォームに接続するには、この新しいビューを取得する方法かどうかを知る必要があります。

+0

9223372036854775807は大変です...... – Simon

答えて

3

問題はここに((([SummaryYQ_LOV]。[SummaryYQ])= フォーム!YQ_Location.text5))

あなたに、このようなAccessクエリを変換することはできません

ですSQLビューを使用することができますが、代わりにStored Procedureを使用し、フィールドとしてforms!YQ_Location.text5の値をパラメータとして渡すことができます。

また、これは不要です。TOP 9223372036854775807 WITH TIESこれは冗長です。

+0

ええと、SSMAが変換しようとしたときの数はちょうどその数です。あなたはストアドプロシージャを構築する方法を知りませんでしたか?私は初めてこの物を見ています... – 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 ServerがMS-SQL移行ツールに優れた(及びフリー)MS-アクセスを有します。 MS-Accessのクエリを変換するのは非常に良い仕事です。フォームパラメータでクエリを変換しようとはしませんでしたが、それは一見価値があり、特に他のクエリを変換する予定がある場合は、いくつかのことを学ぶことができます。 http://www.microsoft.com/sqlserver/en/us/product-info/migration-tool.aspx#oracle

1

SQLサーバービューを作成し、そのビューへのアクセスフォントの終了リンクから作成します。それは簡単で、多くの仕事はありません。

どのようなパラメータについても?クエリとビューからそれらを削除するだけです。次に、Accessクライアントのwhere句を使用してレポートを開きます。

実際、リンクされたテーブル(またはこの場合はビュー)にバインドされたAccessフォームまたはレポートを使用することは簡単です。また、Accessは開いているフォームの「where」句で指定したreocrdsをプルダウンするだけです。オープンレポートコマンド。

関連する問題