【问题标题】:How can I connect to Lotus thru ODBC using VBA?如何使用 VBA 通过 ODBC 连接到 Lotus?
【发布时间】:2009-06-17 19:47:29
【问题描述】:

我有兴趣设置一个 Access 数据库来自动运行报告。为了省去访问每台客户端计算机并设置适当的 DSN 的麻烦,如果可能的话,我想在 VB 脚本本身中设置 ODBC 连接。

我用谷歌搜索并检查了这个网站,发现了一些不错的入门代码,但不足以消除所有错误消息。有人可以完成下面的代码吗?

Sub SetupODBC(Str_Server as string, Str_Db as string)  
 'Str_Server=Name of Server
 'Str_db=Name of Database
 Dim C as ADODB.Connection  
 Set C = new ADODB.Connection  
 C.ConnectionString = ??  
 C.Open  
 Debug.print C.State  
Exit Sub

【问题讨论】:

  • 您是尝试从 Access 连接到 Lotus Notes 还是从 Lotus Notes 连接到 Access?如果是第一个,您要生成什么类型​​的报告?也许您可以使用预定代理直接在笔记中进行。

标签: vba odbc lotus-notes


【解决方案1】:

欢迎来到董事会。 ConnectionStrings 确实是您的朋友,但您遇到的问题是您没有驱动程序:) Lotus Notes 不是关系数据库,它是document oriented database。出于这个原因,从历史上看,还没有一种方法可以像访问关系数据库一样访问它。然而,IBM 最终开始以NotesSQL 的形式编写一种翻译器。如果您点击链接并获取驱动程序,您应该能够使用 ODBC。值得注意的是,Notes 将自己暴露给 COM。因此,如果迫在眉睫,您可以自动化客户端。

【讨论】:

  • 感谢您详细解释。
  • 在 DLd 驱动程序之后,您是否能够让事情顺利进行?
  • 是的,这行得通。但是,由于无论如何我都必须在所有客户端机器上安装驱动程序,所以我只是在那里手动制作了 DSN。感谢您的帮助。
【解决方案2】:

这个网站是你的朋友:http://www.connectionstrings.com/access

一开始我没有正确回答你的问题。我看到您想创建一个从 Access 到 Lotus 的链接以报告 Lotus Notes 数据。有几种方法可以做到这一点。

我经常使用一种方法将 Lotus Notes 数据公开为 XML,然后从远程系统访问该 XML。您可以轻松地使用 XML 开始标记、根元素创建 Notes Page,然后在根元素之间插入嵌入视图。然后,该嵌入视图需要显示为 HTML 并包含解析为 xml 标记的列。例如,视图的每一行看起来都类似于:

<Person><FirstName>Ken</FirstName><LastName>Pespisa</LastName></Person>

您的列公式将是:

"<Person><FirstName>" + FirstName + "</FirstName>"

对于名字列,对于姓氏列,它将是这样的:

"<LastName> + LastName + </LastName></Person>"

请注意,这假设您的 Notes 服务器已打开 HTTP 服务,并且您可以通过浏览器访问数据库。

但是,正如其他答案所述,您可以使用其他方法,例如 NotesSQL 和 COM。不过,听起来您正在将此解决方案放在许多工作站上,而 NotesSQL 将要求您在每个工作站上安装驱动程序。 COM 方法不需要在用户的办公桌上进行任何额外的工作就可以工作,因此在这种情况下,我更倾向于该解决方案。

【讨论】:

    【解决方案3】:

    看起来很适合我的需求,即使它已经一年没有更新了。但仍然没有雪茄。现在,我收到“未找到数据源名称且未指定默认驱动程序”

    (显然,ServerNameGoesHere 和 DatabaseNameGoesHere 是替代品)

    Sub dbX()  
         Dim C As adodb.Connection  
         Set C = New adodb.Connection  
         C.Open _  
            "Driver={Lotus NotesSQL 3.01 (32-bit) ODBC DRIVER (*.nsf)};" & _  
            " Server=ServerNameGoesHere;" & _  
            " Database=DatabaseNameGoesHere.nsf;"  
         C.Close
    End Sub
    

    【讨论】:

    • 您要创建什么类型的报告?直接在 Lotus Notes 中创建可能更容易。
    • 谢谢,但我没有 Lotus 开发工具的权限。我只是想创建和保存一个 Excel 文件,这是我以前用 VBA 做过很多次的事情。但是,这是我第一次尝试建立无 DSN 连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多