【问题标题】:How do I use VBA to select the correct database schema如何使用 VBA 选择正确的数据库架构
【发布时间】:2017-12-16 11:15:22
【问题描述】:

我在 SQL 服务器上创建了一个带有链接表的 Access 2010 数据库。 主窗体上的按钮调用存储过程,使用户能够从各自的源文件(主要是 Excel 表)中添加数据。存储过程和触发器的开发已外包。

该数据库已在不同的地点/国家推出。 为了提高性能并防止用户从他们自己的管理位置以外的位置访问数据,已决定更新数据库。开发公司现在提出了以下建议: 数据库将被拆分为不同的模式,每个位置都会有自己的模式。架构的选择将基于 ActiveDirectory 属性中定义的用户区域的位置。我可以将此位置存储在公共变量中。

为了在 SQL 服务器上创建指向表的链接,我使用了 Access 内置向导。现在,与表的连接现在描述为: ODBC;Description=NETWPROD;Driver=SQL Server;Server=CCMDB11,cc.acme.corp;Trusted connection=Yes;app=Microsoft Office 2010;Database=1PRD;table=dbo.1PRD_Compliances

我的问题如下:

是否可以在表格描述中添加类似“SCHEMA=no”的属性。如果是,我如何使用 Access VBA 添加它。

或者

如何在使用 Access VBA 登录时将用户重定向到正确的基于位置的架构?

或者 如何将用户重定向到 SQL 服务器上的正确视图,该视图已过滤相关位置的数据。

非常感谢任何帮助。

【问题讨论】:

  • >>>如何在使用 Access VBA 登录时将用户重定向到正确的基于位置的架构?
  • ;table=dbo.1PRD_Compliances 表示您正在使用架构 dbo(默认架构)。只需从适当的架构链接到表即可。
  • 安德烈,谢谢您的回复。然而问题是一些用户可以访问不同的模式。当用户登录时只能访问一个架构,用户应该被引导到相关架构,在多个区域中,用户应该能够选择区域,从而被引导到相应的架构。

标签: sql-server ms-access vba database-schema


【解决方案1】:

我只会回答你的第一个问题,尽管你可以使用相同的技术来回答其他问题。

您可以通过TableDef.Connect 属性更改连接字符串。

Public Sub AddNoSchema()
    Dim db As DAO.Database
    Set db = CurrentDb()
    Dim tdf As Variant 'DAO.TableDef
    For Each tdf In db.TableDefs
        If tdf.Connect LIKE "*SQL Server*" Then
            tdf.Connect = tdf.Connect & ";SCHEMA=no"
            tdf.RefreshLink
        End If
    Next tdf
End Sub

【讨论】:

  • 埃里克,谢谢您的回复。您提出答案的方式使解决问题看起来很容易。我肯定会在这个之前!
  • 如果有效,请选择我的答案作为正确答案,以表明此问题已解决
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多