在没有 DSN 的情况下从 Teradata 在 Access 中创建链接 table?
Create a linked table in Access from Teradata without DSN?
连接到 Teradata
'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 为具有已创建连接的应用程序以编程方式创建链接 table。
有没有人能够从 Access 到 Teradata 成功创建链接的无 dsn table?
如果您有有效的 ODBC 连接字符串,那么您应该能够使用 DoCmd.TransferDatabase 创建链接 table。我手边没有 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"
我终于找到了一个有效的连接字符串! :)
Function adoTera()
Dim oConn As ADODB.Connection
Dim rs As ADODB.Recordset
Set oConn = New ADODB.Connection
Set rs = New ADODB.Recordset
oConn.ConnectionString = "PROVIDER=MSDASQL;" & _
"DRIVER={Teradata};" & _
"DBCName=yourDBCName;" & _
"DefaultDatabase=yourDBName;" & _
"UID=yourUserName;" & _
"PWD=yourPassword;"
oConn.Open
rs.Open "SELECT * FROM yourTable", oConn
ThisWorkbook.Worksheets("Sheet1").Range("A:A").CopyFromRecordset rs
rs.Close
oConn.Close
Set rs = Nothing
Set con = Nothing
End Function
连接到 Teradata
'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 为具有已创建连接的应用程序以编程方式创建链接 table。
有没有人能够从 Access 到 Teradata 成功创建链接的无 dsn table?
如果您有有效的 ODBC 连接字符串,那么您应该能够使用 DoCmd.TransferDatabase 创建链接 table。我手边没有 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"
我终于找到了一个有效的连接字符串! :)
Function adoTera()
Dim oConn As ADODB.Connection
Dim rs As ADODB.Recordset
Set oConn = New ADODB.Connection
Set rs = New ADODB.Recordset
oConn.ConnectionString = "PROVIDER=MSDASQL;" & _
"DRIVER={Teradata};" & _
"DBCName=yourDBCName;" & _
"DefaultDatabase=yourDBName;" & _
"UID=yourUserName;" & _
"PWD=yourPassword;"
oConn.Open
rs.Open "SELECT * FROM yourTable", oConn
ThisWorkbook.Worksheets("Sheet1").Range("A:A").CopyFromRecordset rs
rs.Close
oConn.Close
Set rs = Nothing
Set con = Nothing
End Function