2017-08-30 66 views
1

连接到Teradata的在没有DSN的Teradata Access中创建链接表?

'Requires reference to ADO and ADOX 
Public adoCn As ADODB.Connection 
Public adoCat As New ADOX.Catalog 
Public adoTbl As New ADOX.Table 

Function TD_Make_Linked_Table() 

Dim varServer As String 
Dim varDatabase As String 
Dim varUser As String 
Dim varPassword As String 

varServer = "Test" 
varDatabase = "Test_Test" 
varUser = "Test_User" 
varPassword = "Test_Password" 

Set adoCn = New ADODB.Connection 

'I have tried multiple connection strings 

adoCn.ConnectionString = "PROVIDER=MSDASQL;DRIVER={Teradata};" & _ 
         "DBCName=" & varServer & ";" & _ 
         "DefaultDatabase=" & varDatabase & ";" & _ 
         "UID=" & varUser & ";" & _ 
         "PWD=" & varPassword & ";" 

adoCn.Open 

Set adoCat = New ADOX.Catalog 
Set adoCat.ActiveConnection = adoCn 
Set adoTbl = New ADOX.Table 

adoTbl.ParentCatalog = adoCat 
adoTbl.Name = "Test" 

'I have tried multiple property combinations 
'Causes error 3265 Item not found 
'adoTbl.Properties("?") = adoCn 
'adoTbl.Properties("Jet OLEDB:Link Datasource") = "Test" 
'adoTbl.Properties("Jet OLEDB:Link Provider String") = 
'adoTbl.Properties("Jet OLEDB:Remote Table Name") = "LinkDatabaseTable" 
'adoTbl.Properties("Jet OLEDB:Create Link") = True 

'Causes 3251 provider is not capable of performing operation 
'adoCat.Tables.Append adoTbl 

adoCn.Close 

    Set adoTbl = Nothing 
    Set adoCat = Nothing 
    Set adoCn = Nothing 

End Function 

我已经验证连接是否正常工作。我可以通过打开连接并执行SQL来查询数据。

我无法在Access中使用创建连接的应用程序使用Visual Basic编程创建链接表。

是否有人能够成功创建从Access到Teradata的链接dsn-less表?

回答

1

如果您有一个可用的ODBC连接字符串,那么您应该可以使用DoCmd.TransferDatabase来创建链接表。我没有的Teradata服务器的方便,但是这对我的作品与SQL Server:

Dim connStr As String 
connStr = _ 
     "DRIVER=ODBC Driver 11 for SQL Server;" & _ 
     "SERVER=(local)\SQLEXPRESS;" & _ 
     "DATABASE=myDb;" & _ 
     "Trusted_Connection=yes" 
DoCmd.TransferDatabase _ 
     TransferType:=acLink, _ 
     DatabaseType:="ODBC Database", _ 
     DatabaseName:="ODBC;" & connStr, _ 
     ObjectType:=acTable, _ 
     Source:="dbo.projects", _ 
     Destination:="dbo_projects" 
+0

谢谢你的回复。 Teradata没有以相同的方式处理请求。我收到运行时错误'3000'保留错误(-7778);这个错误没有消息。 – Orthogod

+0

@Orthogod - 你能够从Access本身手动创建链接表吗? –

+0

是的,我可以在Access中创建一个链接到数据源的表。 – Orthogod