最近、Access DB バックエンドを作成し、SQL Server に移行しました。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()
SQL Server 関数がランタイム エラー 3085「ユーザー定義関数 'GetDate' in expression」を返していることです。この同じクエリを MS-Access Query Builder で VBA コードの外部でパススルーとして作成すると、正常に実行され、サーバーの日付と時刻が返されますが、コードでのみ適切にパススルーされません。