Sirik писал(а):access, я не могу использовать внешние данные, так как у меня свзять не постоянная:
время от времени перелинковую базы
может программным путём как-то можно?
У тебя есть три варианта:
1. Указывать имя внешней базы непосредственно в SQL-запросе.
- Код: Выделить всё
- SELECT T1.Field1, T1.Field2 FROM Table1 as T1 IN 'С:\db2.mdb'
2. Программно прилинковывать таблицы следующей ф-ией:
- Код: Выделить всё
- Public Function LinkJetTable(sDestPath As String, sDestPWD As String, sLinkTblAs As String, sSourcePath As String, sSourcePWD As String, sLinkTbl As String) As Boolean
 'Прилинковка таблицы из другой базы Access
 'sDestPath, sDestPWD - путь и пароль к базе, в которую нужно прилинковать табл.
 'sLinkTblAs - под каким именем прилинковывать таблицу
 'sSourcePath, sSourcePWD - путь и пароль к базе, в которой находится подсоединяемая табл.
 'sLinkTbl - имя таблицы в этой базе
 Dim cat As New ADOX.Catalog
 Dim tbl As New ADOX.Table
 On Error Resume Next
 ' Open the catalog
 cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
 "Data Source=" & sDestPath & ";Jet OLEDB:Database Password=" & sDestPWD
 If Err.Number <> 0 Then Exit Function
 ' Set the name and target catalog for the table
 tbl.Name = sLinkTblAs
 Set tbl.ParentCatalog = cat
 ' Set the properties to create the link
 tbl.Properties("Jet OLEDB:Create Link") = True
 tbl.Properties("Jet OLEDB:Link Datasource") = sSourcePath
 tbl.Properties("Jet OLEDB:Link Provider String") = ";Pwd=" & sSourcePWD & ";"
 tbl.Properties("Jet OLEDB:Remote Table Name") = sLinkTbl
 ' Append the table to the collection
 cat.Tables.Append tbl
 If Err.Number = 0 Then LinkJetTable = True
 Set tbl = Nothing
 Set cat = Nothing
 End Function
3. Воспользоваться статьей, которую рекомендует GSerg 
 (хотя это почти равносильно 2-ому варианту)
 (хотя это почти равносильно 2-ому варианту)Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.