доступ к копии SQL - PullRequest
       11

доступ к копии SQL

2 голосов
/ 17 октября 2008

У нас есть база данных Access, в которой есть набор локальных таблиц, форм ввода и т. Д., В которых пользователь хранит свои данные.

У нас также есть база данных SQL с теми же таблицами, которая используется для отображения данных в форме веб-поиска.

Каков наилучший способ позволить пользователю обновлять свои изменения в базе данных SQL, сохраняя локальную рабочую копию, чтобы он мог работать в автономном режиме, а затем отправлять файлы, когда он доволен новой версией данных?

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

Могу ли я вызвать SP из доступа к SQL для усечения таблиц, так как у меня проблема с запуском удалений

Я действительно хочу передать это пользователю, выполняющему вызов macro / sql, который повторяется и т. Д.

Спасибо за вашу помощь

Ответы [ 3 ]

1 голос
/ 17 октября 2008

Никогда не используйте связанные таблицы MS Access с MS SQL.

Они не только медленные, но и Access могут оставлять открытые клиентские курсоры записи в ссылочных таблицах. Это действительно тупой способ создать множество взаимоблокировок, но Access все равно это делает.

Microsoft значительно улучшила это, когда добавила проекты данных Access - в них весь внутренний сервер заменен на SQL, а Access просто предоставляет формы.

Если вы хотите, чтобы действия пользователя записывались напрямую, тогда ADP - лучший способ.

Если вы хотите локально кэшировать изменения в вашей базе данных Access, а затем отправить их в SQL, у вас гораздо более сложная проблема. Вам нужно будет гораздо более точно определить, как именно должна происходить синхронизация, например, если два пользователя вносят изменения в автономном режиме, кто выигрывает при подключении?

1 голос
/ 19 октября 2008

Я не понимаю, почему вы просто не связываетесь напрямую с данными SQL Server и не используете их напрямую, вместо того, чтобы заниматься сохранением второй копии. Это стандартный способ доступа к вещам в Access - почему вы сопротивляетесь естественным возможностям используемого вами инструмента?

1 голос
/ 17 октября 2008

Вы должны иметь возможность использовать объект ADODB.Command для выполнения хранимых процедур.

EDIT:

Этот пример скопирован из Использование ADO в VB и Access

Sub ADO_COMMAND_CONNECTION_TEST()
Dim cmd As New ADODB.Command
Dim rs As ADODB.Recordset
Dim strConn As String

    cmd.ActiveConnection = " DRIVER={SQL Server};" & _
      "Server=UKDUDE;DATABASE=pubs;UID=sa;PWD=;"
    cmd.CommandText = "byroyalty"
    cmd.CommandType = adCmdStoredProc
    cmd.Parameters.Refresh
    cmd.Parameters(1).Value = 25

    Set rs = cmd.Execute

' Recordset now has authors with 25% royalty.....

End Sub
...