【问题标题】:Query database through Excel VBA通过Excel VBA查询数据库
【发布时间】:2012-06-05 10:27:28
【问题描述】:

我是 Excel VBA 的初学者。我想从 Teradata 数据库中查询数据并将输出提供到 Excel 工作表的行中。当我编写以下代码时:

Private Sub CommandButton1_Click()
    Dim conn As Connection
    Dim rec1 As Recordset
    Dim thisSql As String
    Set conn = New Connection
    conn.Open "Driver=Teradata; DBCName=" & DBCName & ";UID=" & UID & ";PWD=" & PWD
    thisSql = "simple select qyery here"
    With .QueryTables.Add(Connection:=conn, Destination:=.Range("A1"))
        .Sql = thisSql
        .Name = "data"
        .FieldNames = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

我收到错误提示 '编译器错误:未定义用户定义类型'

如何克服这个错误?我需要在代码中包含任何内容吗?

请帮忙

我正在使用 MSVisualBasic 6.5 编辑器

【问题讨论】:

  • 在该行显示错误:Dim conn As Connection

标签: database excel teradata vba


【解决方案1】:

您好,我想在使用 QueryTables.Add 时需要一个记录集作为连接对象。 我修改了您的代码并尝试如下:

Dim conn As adodb.Connection
Dim rec1 As adodb.Recordset
Dim thisSql As String

Set conn = New adodb.Connection

conn.Open your_connection_string

thisSql = "your query here"

Set rec1 = New adodb.Recordset
rec1.Open thisSql, conn

With Sheet3.QueryTables.Add(Connection:=rec1, Destination:=Sheet3.Range("A1"))
    .Name = "data"
    .FieldNames = True
    .Refresh BackgroundQuery:=False
End With

【讨论】:

  • 嗨吉姆...感谢您的回复...我已经更改了代码...但我仍然面临同样的错误..我的代码没有将“连接”标识为关键字.. . 我觉得
  • 奇怪~ 你检查过你项目中对 Microsoft ActiveX 数据对象库的引用吗?我测试了上面的代码,成功了。
  • 谢谢吉姆.. 达建议帮助。我已经检查了项目参考中的 ActiveX 库。我在这里有一个问题:实际上我首先尝试检查activeX,但我看不到它。然后我打开了其他我知道并且工作正常的VBAProject(使用数据库)并且它正在检查ActiveX..然后我能够检查我的项目的 ActiveX 参考。
  • 这是上述评论的延续:所以,如果我取消选中我的项目的 ActiveX 库并且我想再次检查它。那么我无法在参考中看到 ActiveX 库..在这个如果我需要打开其他项目,然后在我的项目中检查 ActiveX 引用,我正在保存它。如果参考文献的发光框中没有可用的参考文献,有关如何包含参考文献的任何帮助?
  • 事先检查库称为“早期绑定”。当您打开参考对话框时,它会在顶部显示选中的库。我猜你可能很难找到合适的库。除了早期绑定之外,还有后期绑定。您应该使用 CreateObject 函数进行后期绑定。欲了解更多信息,请在谷歌上搜索,您可以在网络上找到大量页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多