访问SQL副本

时间:2008-10-17 07:45:05

标签: sql-server-2005 ms-access

我们有一个Access DB,它有一组本地表和输入表单等,用户可以在其中维护数据。

我们还有一个具有相同表格的SQL DB,用于在Web搜索表单中显示数据。

允许用户更改SQL数据库的最佳方法是什么,同时保持工作副本本地化以便他可以脱机工作,然后在他对新版本的数据感到满意时推送文件?

我的第一个想法是将SQL表添加为链接表,然后我可以截断(访问就是这样)或删除每个表中的内容,然后为每个表执行插入。

我是否可以通过访问SQL来调用SP以截断表,因为我在运行删除时遇到问题

我确实希望将其归结为运行可重复的宏/ sql调用的用户等。

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

您应该能够使用ADODB.Command对象来执行存储过程。

编辑:

此示例是从Using ADO in VB and 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

答案 1 :(得分:1)

不要将MS Access链接表与MS SQL一起使用。

它们不仅速度慢,而且可以在引用的表上保留开放的客户端写入游标。这是创建大量死锁的一种非常愚蠢的方式,但无论如何Access都会这样做。

Microsoft在添加Access Data Projects时对此进行了大幅改进 - 在这些项目中,整个后端被SQL替换,Access只提供表单。

如果您希望用户操作直接写回,那么ADP是迄今为止最好的方法。

如果要在Access数据库中本地缓存更改,然后将它们发送到SQL,则会出现更复杂的问题。您需要更准确地了解您希望同步发生的具体方式 - 例如,如果两个用户进行离线更改,他们在连接时会获胜?

答案 2 :(得分:1)

我不明白为什么你不直接链接到SQL Server数据并直接使用它,而不是去维护它的第二个副本。这是做事的标准Access方式 - 为什么你要抵制你正在使用的工具的自然功能?