Отправить SQL Server команду для перемещения данных (на сервере) из Access - PullRequest
0 голосов
/ 15 сентября 2018

Я хотел бы иметь подпрограмму Access VBA, которая отправляет инструкцию в базу данных SQL Server для копирования некоторых данных из одной из удаленных таблиц в другую таблицу (по крайней мере, одна из таблиц не связана с локальной базой данных Access) , Я хочу, чтобы все это происходило на сервере, так как это много данных.

Я пытаюсь что-то вроде следующего, но он возвращает ошибку времени выполнения 3065 (Невозможно выполнить запрос выбора). Любое понимание того, как это исправить? Есть ли какая-то причина, по которой я не смог сделать это из Access?

Кроме того, я использую подход DAO, но есть ли лучший подход (ADO?)? Что-то новенькое в этом, поэтому не всегда уверен, что я понимаю нюансы различных подходов.

Public Sub myTest()

Setup:
    Dim dbs As DAO.Database
    Dim qdf As DAO.QueryDef

    Set dbs = CurrentDb()
    Set qdf = dbs.CreateQueryDef("")

qdf.SQL = "INSERT INTO tmp SELECT [Applicant], [CaseName], [DecisionDate], [Filed], [Docket] " _
       & "FROM Cases WHERE [DecisionDate] >= '01/01/2018';"

qdf.Connect = "ODBC;Driver={SQL Server};server=myServer;database=myDB;"

qdf.Execute

End Sub

1 Ответ

0 голосов
/ 15 сентября 2018

То, что у тебя есть, выглядит нормально. Я бы сначала «протестировал» sql, выполнив ту же самую команду с помощью SQL Management Studio.

Что касается вашего кода? Это также выглядит хорошо, но я считаю, что гораздо лучше сохранить PT-запрос, и, таким образом, вам не нужно связываться со строкой соединения в коде. И таким образом ваш код становится:

With CurrentDB.querydefs("MyPassR")
  .SQL = "INSERT INTO tmp SELECT [Applicant], [CaseName], [DecisionDate], [Filed], [Docket] " & _
  "FROM Cases WHERE [DecisionDate] >= '01/01/2018';"
  .ReturnsRecords = False
  .Execute
End With
...