2017-08-30 67 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