web-dev-qa-db-ja.com

AccessのDAOレコードセットの基礎としてのSQLServerパススルークエリ

最近、AccessDBバックエンドを作成してSQLServerに移行しました。 VBAコードを使用して、SQL Serverバックエンドへの接続を作成し、結果をVBレコードセットに格納してパススルークエリを実行しようとしています。これを試してみると、クエリは通過する。

_Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strConnect As String

strConnect = "DRIVER=SQL Server;SERVER=55.55.55.55 SQLExpress;UID=UserName;PWD=Password"

Set db = OpenDatabase("DBName", dbDriverNoPrompt, True, strConnect)

Set rs = db.OpenRecordset("SELECT GetDate() AS qryTest", dbOpenDynaset)

MsgBox rs!qryTest

rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
_

私が得ている問題は、完全に適切なGetDate() SQLServer関数がランタイムエラー3085「式のユーザー定義関数 'GetDate'」を返していることです。これと同じクエリをMS-AccessクエリビルダーでVBAコードの外部でパススルーとして作成すると、正常に実行され、サーバーの日付と時刻が返されます。コード内でのみ、正しくパススルーされません。

9
Mike

QueryDefオブジェクトを使用してパススルークエリを作成してから、QueryDefの.OpenRecordsetメソッドを介してRecordsetを開く必要があります。次のコードは私のために働きます:

Dim qdf As DAO.QueryDef, rst As DAO.Recordset
Set qdf = CurrentDb.CreateQueryDef("")
qdf.Connect = "ODBC;Driver=SQL Server;Server=.\SQLEXPRESS;Trusted_Connection=Yes;"
qdf.SQL = "SELECT GetDate() AS qryTest"
qdf.ReturnsRecords = True
Set rst = qdf.OpenRecordset
Debug.Print rst!qryTest
rst.Close
Set rst = Nothing
Set qdf = Nothing
19
Gord Thompson

パススルークエリを使用してローカルテーブルにINSERTINTOを実行することはできません。結果のクエリ(Querydefで生成したもの)をINSERTのソースとして使用します。

0
Bonnie

ゴード、渡されたパラメーターと挿入ステートメントを使用してprocを実行するコードのmodを提供できますか?私はそれを使って取り組んできましたが、それを打ち負かすことができませんでした。基本コードが機能しているので、サーバーと正しく通信していますが、OpenRecordsetが正しく取得されていません。

基本的に、私は3つのステップのプロセスを実行しています。SPの実行の開始をログに記録し、SPを実行し、終了をログに記録します。これらは私のSQL文字列です:

    beginsql = " INSERT INTO [dbo_zSprocExecuteLog]" _
        & " values (sysdatetime(), 'uspGradePromotionDistrict', " _
        & [SeekerUserID] & ", 'B', '(" & [ReportDistrict] & ")';"

    sqlstring = " EXEC uspGradePromotionDistrict" _
        & " @District = '" & [ReportDistrict] & "';"

    endsql = " INSERT INTO [dbo_zSprocExecuteLog]" _
        & " values (sysdatetime(), 'uspGradePromotionDistrict', " _
        & [SeekerUserID] & ", 'E', '(" & [ReportDistrict] & ")';"

私はあなたの入力に感謝します、これは私を狂わせています。そして、Access/SQLプログラミングに関する良い本をお勧めできますか?私はSQLServer側で経験を積んでいますが、AccessFuは少し弱いです。

0
SQLWayne