|
|
|
| нужно импортировать табл. из одной базы в другую, находясь при этом в третьей; как сделать это только импотром (в смысле одной командой TransferDatabase), т.е. без импорта в себя и последующего экспотра в другую; что-то не могу сообразить - как ... | |
|
| |
|
|
|
| http://hiprog.com/forum/read.php?id_forum=1&id_theme=1325&page=1 | |
|
| |
|
|
|
| Вот я сделал, но ошибка- не может найти таблицу источник. Посмотрел Ваш вариант (приаттаченный по ссылке, все пректрасно работает!), вроде бы как одинаково, ан нет ... В чом тут заковырка?
Public Sub CopyServerData()
Dim db As Database, db_new As Database
Dim tb As TableDef
Set db_new = CreateDatabase("C:\_Share\new.mdb")
Set db = OpenDatabase("\\ts\0Data_Metall_\Data_Met.mdb")
For Each tb In db.TableDefs
If tb.Attributes = 0 Then
DoCmd.TransferDatabase acExport, "Microsoft Access", "C:\_Share\new.mdb", acTable, tb.Name, tb.Name
End If
Next
Set db_new = Nothing
DBEngine.CompactDatabase "C:\_Share\new.mdb", "C:\_Share\Data_Met_" & Str(Day(Date)) & "_" & _
Str(Month(Date)) & "_" & Str(Year(Date)) & "_" & Str(Hour(Time)) & ".mdb"
Kill "C:\_Share\new.mdb"
End Sub
| |
|
| |
|
|
|
| Так у ВАс все совсем не так...
посмотрите внимательно мой код. нужно получить объект Application, а не database | |
|
| |
|
|
|
| Черт, я что-то недогоняю, сделал через объект application и все равно та же ошибка
Public Sub CopyServerData()
Dim db As Database, db_new As Database
Dim tb As TableDef
Dim appAccess As New Access.Application
Set db_new = CreateDatabase("C:\_Share\new.mdb")
appAccess.OpenCurrentDatabase ("\\ts\0Data_Metall_\Data_Met.mdb")
Set db = appAccess.CurrentDb
For Each tb In db.TableDefs
If tb.Attributes = 0 Then
‘вот тут и происходит ошибка:
Объект <имя> не найден ядром базы данных Microsoft Jet. Проверьте существование объекта и правильность имени и пути. (Ошибка 3011)
DoCmd.TransferDatabase acExport, "Microsoft Access", "C:\_Share\new.mdb", acTable, tb.Name, tb.Name
End If
Next tb
Set db_new = Nothing
DBEngine.CompactDatabase "C:\_Share\new.mdb", "C:\_Share\Data_Met_" & Str(Day(Date)) & "_" & _
Str(Month(Date)) & "_" & Str(Year(Date)) & "_" & Str(Hour(Time)) & ".mdb"
Kill "C:\_Share\new.mdb"
End Sub | |
|
| |
|
|
|
| уберите If tb.Attributes = 0 Then
добавлено..
хотя это наверное не в тему...
проверьте по шагам какое имя у TB | |
|
| |
|
|
|
| с аттрибуты не помогло, по шагам как бы все хавает, путь к базе находит, потом выдает ошибку, но имя таблицы при наведении курсора подсвечивает правильно "Batch" | |
|
| |
|
|
|
| а таблицы случаем не связанные? | |
|
| |
|
|
|
| все, огромное спасибо, ошибку нашел, заработало, хотя осталось недопонимание, почему нужно обязательно через объект application делать, как бы интуитивно "да", но мутно ... | |
|
| |
|
|
|
| потому что docmd - принадлежит объекту ACCESS.application
в dao.database нет такого объекта | |
|
| |
|