Gần đây chúng tôi đã tạo và di chuyển phần phụ trợ Access DB của chúng tôi sang SQL Server. Tôi đang cố gắng, bằng cách sử dụng mã VBA, tạo một kết nối đến phụ trợ SQL Server và chạy một truy vấn passthrough với các kết quả được lưu trữ trong một bản ghi VB. Khi tôi thử điều này, truy vấn KHÔNG đi qua.Truy vấn qua lại máy chủ SQL làm cơ sở cho bản ghi DAO trong Access
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
Vấn đề tôi nhận được là GetDate()
SQL chức năng máy chủ hoàn toàn phù hợp đang trở lại Runtime Error 3085 "User Defined Function 'getdate' trong khái niệm". Nếu tôi tạo truy vấn này giống như một passthrough trong MS-Access Query Builder, bên ngoài mã VBA, nó chạy tốt và trả về ngày và giờ của máy chủ, chỉ trong mã là nó không đi qua đúng.
"đã di chuyển phần phụ trợ DB Access của chúng tôi sang SQL Server". Đề nghị của tôi bây giờ sẽ là di chuyển từ DAO sang ADO recordsets, nếu bạn yêu cầu truy vấn trong view quen thuộc thì passthroughs là rất tốt, nhưng nếu chỉ cần trong mã thì ADO là con đường để đi:) –
Đó là kế hoạch cuối cùng. Thật không may tôi đang ở trong một môi trường mà tôi là người duy nhất kỹ thuật quản lý một DB được xây dựng bởi người khác 4 năm trước và tăng tốc khi tôi đi. Một bước tại một thời điểm, nhưng kế hoạch là để chuyển đổi sang ADO .... cuối cùng! – Mike