Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用VBA代码从excel连接到Teradata-无法通过网络访问Teradata服务器_Vba_Excel_Ado_Teradata - Fatal编程技术网

无法使用VBA代码从excel连接到Teradata-无法通过网络访问Teradata服务器

无法使用VBA代码从excel连接到Teradata-无法通过网络访问Teradata服务器,vba,excel,ado,teradata,Vba,Excel,Ado,Teradata,我一直试图使用vba代码从Excel连接到Teradata,但出现以下错误: 无法通过网络访问Teradata服务器。我已经能够成功地从Teradata SQL assistant进行连接,并且我还成功地ping了Teradata服务器。我正在使用在VMware player上运行的笔记本电脑中的Teradata express edition。我还通过Excel数据连接向导和Microsoft query成功连接到Teradata。我还关闭了防火墙,检查是否可以连接,但仍然无法连接。请告诉我哪

我一直试图使用vba代码从Excel连接到Teradata,但出现以下错误: 无法通过网络访问Teradata服务器。我已经能够成功地从Teradata SQL assistant进行连接,并且我还成功地ping了Teradata服务器。我正在使用在VMware player上运行的笔记本电脑中的Teradata express edition。我还通过Excel数据连接向导和Microsoft query成功连接到Teradata。我还关闭了防火墙,检查是否可以连接,但仍然无法连接。请告诉我哪里出了问题

请查找以下代码:

Private Sub CommandButton1_Click()
Dim conn As ADODB.Connection
Dim rec1 As ADODB.Recordset
Dim thisSql As String

Set conn = New ADODB.Connection

conn.Open "Driver=Teradata;DBCName=dsnname;Databasename=dbname;Uid=Userid;Pwd=****;"

thisSql = "sel * from customer_db.customer"

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

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

如果更改连接对象的打开方法,该怎么办:


连接打开的DSN=DSN名称;Databasename=dbname;Uid=用户id;Pwd=**

这个连接脚本对我有效

'在引用中添加Microsoft ActiveX数据对象2.8库 '安装Teradata SQL Assistant时,Teradata的ODBC驱动程序将安装TDOLEDB提供程序 '此示例连接到Teradata,删除MyTable的内容并从活动电子表格中插入第7-8行

函数OpenConn作为对象 设置OpenConn=newadodb.Connection Dim myConnectionString作为字符串 myConnectionString=Provider=TDOLEDB;数据源=MyTeradataServerName;持久安全信息=True;用户ID=MyTeradataUserID;密码=MyTeradataPass;会话模式=ANSI;DefaultDatabase=GRP\u BCE\u FINANCE\u IM;MaxResponseSize=65477; OpenConn.openmyconnectionstring 端函数

Sub CloseConn作为对象 关闭连接 设置连接=无 端接头

副推手

Dim TeraObjCmd As New ADODB.Command
Dim TeraObjRs As ADODB.Recordset
Dim TeraObjRs2 As ADODB.Recordset

Dim TeraCnxn As Object
Set TeraCnxn = OpenConn()

TeraObjCmd.ActiveConnection = TeraCnxn

'Clear Previous Data
TeraObjCmd.ActiveConnection = TeraCnxn
TeraObjCmd.CommandText = "delete from MyTable"
TeraObjCmd.Execute

'Load New Data
Set TeraObjRs2 = New ADODB.Recordset
TeraObjRs2.Open "SELECT * FROM MyTable where 1 = 2 ", TeraCnxn, adOpenStatic, adLockOptimistic
With TeraObjRs2
    For irow = 7 To 8 'loading results from rows in my spredsheet
        If Len(Trim(Range("B" & irow).Value)) <> 0 Then 'Avoid blank rows
            .AddNew
            .Fields(0) = Range("B" & irow).Value
        End If
    Next
   .UpdateBatch
   .Close
End With

' clean up objects
Set objCmd = Nothing
Call CloseConn(TeraCnxn)
MsgBox "Update Complete!"

End Sub

连接到Teradata的替代连接字符串:

"Provider=MSDASQL.1;Password=myPassword;Persist Security Info=False;User ID=myUserid;Data Source=myDSN"