nedelcho
June 21st, 2001, 12:33 PM
Is it possible to use joins of tables that are in different access DB? I am using VB and ADO.
|
Click to See Complete Forum and Search --> : join tables from different mdb nedelcho June 21st, 2001, 12:33 PM Is it possible to use joins of tables that are in different access DB? I am using VB and ADO. Iouri June 21st, 2001, 02:50 PM In the first database, use ADOX to create a link to the table in the second database. Then the program can act as if both tables are in the first database. ' Note: This program includes a references to: ' ' Microsoft ActiveX Data Objects 2.6 Library ' Microsoft ADO Ext. 2.6 for DDL and Security ' Source table must have primary key Private Sub Command1_Click() Dim app_path As String Dim db_file As String Dim conn As ADODB.Connection Dim adox_catalog As ADOX.Catalog Dim adox_table As ADOX.Table Dim rs As ADODB.Recordset Dim i As Integer Dim txt As String app_path = App.Path If Right$(app_path, 1) <> "\" Then app_path = app_path & "\" ' Open the Depts database. db_file = app_path & "Depts.mdb" Set conn = New ADODB.Connection conn.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & db_file & ";" & _ "Persist Security Info=False" conn.Open ' Create a link to the Employees table ' in the Emp database. Set adox_catalog = New ADOX.Catalog Set adox_catalog.ActiveConnection = conn Set adox_table = New ADOX.Table With adox_table Set .ParentCatalog = adox_catalog .Name = "LinkedTable" .Properties("Jet OLEDB:Link Datasource") = app_path & "Emps.mdb" .Properties("Jet OLEDB:Link Provider String") = "MS Access" .Properties("Jet OLEDB:Remote Table Name") = "Employees" .Properties("Jet OLEDB:Create Link") = True End With ' Add the table to the Tables collection. adox_catalog.Tables.Append adox_table ' Perform the query. Set rs = conn.Execute( _ "SELECT * " & _ "FROM Departments, LinkedTable " & _ "WHERE Departments.DepartmentId = LinkedTable.DepartmentId", , _ adCmdText) ' Display the results. Do While Not rs.EOF txt = txt & rs.Fields(0).Value For i = 1 To rs.Fields.Count - 1 txt = txt & ", " & rs.Fields(i).Value Next i txt = txt & vbCrLf rs.MoveNext Loop rs.Close txtResults.Text = txt ' Delete the linked table. adox_catalog.Tables.Delete "LinkedTable" ' Close the database. conn.Close End Sub Iouri Boutchkine iouri@hotsheet.com nedelcho June 22nd, 2001, 04:30 AM Thanx.Is that reducing seriously the performance compared to tables in one and the same db?Where i can reed more? Iouri June 22nd, 2001, 07:12 AM I don't think that will screw the performance. Again it depends on how often you going to link tables. To read MSDN about ADOX Iouri Boutchkine iouri@hotsheet.com codeguru.com
Copyright Internet.com Inc., All Rights Reserved. |