2012-05-31 116 views
0

我是Excel VBA的初学者。我想从Teradata数据库查询数据,并将输出结果输入到Excel表格的行中。当我写了下面的代码:通过Excel查询数据库VBA

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编辑

+0

它会告诉您哪一行? – lins314159

+0

在线显示错误:昏暗conn作为连接 – SrinivasR

回答

4

您好我想用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 
+0

嗨吉姆...感谢您的答复...我已经改变了代码...但即时通讯仍然面临着同样的错误..我的代码不识别'连接'作为关键字...我感觉 – SrinivasR

+3

奇怪〜你有没有检查你的项目上的Microsoft ActiveX数据对象库的参考?我测试了上面的代码并成功了。 –

+0

谢谢Jim .. tat建议帮助。我已经检查了项目参考中的ActiveX lib。 我在这里有一个问题:其实我第一次尝试检查activeX,我无法看到它。然后我打开其他VBAProject,我知道和工作正常(与数据库),它有ActiveX检查..然后我是能够检查我的项目的ActiveX参考也。 – SrinivasR

相关问题