gpt4 book ai didi

sql - OLEDB 连接没有刷新日期

转载 作者:行者123 更新时间:2023-12-03 15:46:28 25 4
gpt4 key购买 nike

我需要以编程方式检查 Excel 中多个 OLEDB 数据连接到 SQL 表和 View 的刷新日期。它们都以相同的方式配置并使用相同的连接字符串,我在 VBA 中使用以下命令检查它们:

Connections.OLEDBConnection.RefreshDate

但是,其中一些连接没有刷新日期,我并不是说 RefreshDate 属性返回 NULL,该属性甚至不存在。 VBA 抛出“应用程序定义或对象定义错误”,当我检查连接属性时,“上次刷新”字段为空白:

enter image description here

无论我如何构建连接或刷新它多少次,与那些特定 SQL 表和 View 的连接都是一致的。我无法使用 OLEDB,而且我们的一些机器与 Power Query 存在兼容性问题。有谁知道在 Excel 或 SQL 中会导致这种情况或我需要更改什么?

最佳答案

我还没有找到令人满意的解决方案,但是如果您迫切需要知道连接是否已更新,这可能会对您有所帮助。这也可能取决于您拥有的连接类型。免责声明此解决方案与其说是专业解决方案,不如说是一种破解,但似乎直到现在才有效。这是计划:

1 虚拟显示器

在工作表中显示来自您的连接的一段数据。此工作表 Sheet1可能是 HiddenVeryHidden .真的没关系。

2 事件

修改Worksheet_Change事件如下:

Private Sub Worksheet_Change(ByVal Target As Range)
RefreshDate (Now())
End Sub

3 模块

最重要的是,您需要一个模块来提供存储和访问 RefreshDate 的功能。另一张纸上的属性(property)。您可能希望使用存储在 Thisworkbook 中的对象来执行此操作。属性(property),但据我所知,这并不能免于破坏。

这里的代码:
Sub RefreshDate(D As Date)
Sheet2.Range("A1").Value = D
End Sub

Public Function GetRefreshDate() As Date
GetRefreshDate = Sheet2.Range("A1").Value
End Function

4 冲洗并重复所有连接

您现在需要对所有无法使用 RefreshDate 的连接执行此操作。 .您可能希望将所有日期保存在一个工作表中,并为每个连接创建一个工作表。

这个解决方案难看吗?是的。它有效吗?是的,它确实。

基本思路如下: 每次刷新连接时,工作表都会更改,这将触发事件:Worksheet_Change现在您可以保存日期以便以后访问它。

如果您在刷新连接时找到其他方法来访问事件,这也应该可以解决问题。如果您找到其他方法来保存 RefreshDate它会成功的。

关于sql - OLEDB 连接没有刷新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53727363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com