SQL Server Passthrough-Abfrage als Grundlage für ein DAO-recordset in Access
Haben wir vor kurzem erstellt und migriert werden unsere Access-DB-backend auf SQL-Server. Ich versuche, mithilfe von VBA-code, erstellen Sie eine Verbindung zur SQL Server-back-End und führen Sie eine passthrough-Abfrage mit der gespeicherten Ergebnisse in einer VB recordset. Wenn ich dies versuchen, wird die Abfrage NICHT Durchlaufen.
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
Das problem das ich immer die ganz entsprechende GetDate()
SQL Server-Funktion ist wieder Laufzeitfehler 3085 "User Defined Funktion "GetDate' in Ausdruck". Wenn ich diese Abfrage als passthrough im MS-Access-Abfrage-generator, der außerhalb von VBA-code, es läuft wunderbar und gibt die server-Datum und Zeit, nur im code ist es nicht vorbei richtig durch.
- "migriert werden unsere Access-DB-backend auf SQL-Server". Mein Vorschlag wäre jetzt für die Migration von DAO zu ADO-recordsets, wenn Sie Abfragen in der gewohnten Ansicht dann passthroughs sind toll, aber wenn nur erforderlich, im code dann ADO ist der Weg zu gehen : )
- Das ist der letztendliche plan. Leider bin ich in einer Umgebung bin ich die einzige technische person, die die Verwaltung einer DB-gebaut von jemand anderem, vor 4 Jahren und mehr als ich gehe. Ein Schritt zu einer Zeit, aber der plan ist für die Umstellung auf ADO.... schließlich!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie eine
QueryDef
- Objekt zum erstellen einer Pass-Through-Abfrage, dann öffnen Sie das Recordset, über die.OpenRecordset
- Methode des QueryDef-Objekts. Der folgende code funktioniert für mich:Gord, könnten Sie die mods für den code zum ausführen einer Prozedur mit Parameter übergeben, und eine insert-Anweisung? Ich habe schon mit ihm arbeiten, aber nicht in der Lage, es zu schlagen. Ich habe den Basis-code zu arbeiten, so spreche ich damit die server richtig, ich bin nur nicht immer die OpenRecordset richtig.
Im Grunde, ich mache eine drei-Schritt-Verfahren: melden Sie den Beginn der Ausführung der SP, führen Sie das SP-log am Ende. Dies sind meine SQL-strings:
Ich würde schätzen Ihre Eingabe, diese wurde driving me nuts. Und können Sie mir ein gutes Buch über Access/SQL-Programmierung? Ich habe gobs Erfahrung auf der Seite SQL Server, meiner Access-Fu ist ein wenig schwach.
Können Sie nicht tun, eine Einfügung IN eine lokale Tabelle mit einer passthrough-Abfrage. Verwenden Sie die resultierende Abfrage, die Sie erzeugt haben, mit Querydef) als Quelle für den INSERT.