Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: импорт таблиц?
 
 автор: rokin   (04.04.2007 в 15:05)   личное сообщение
 
 

нужно импортировать табл. из одной базы в другую, находясь при этом в третьей; как сделать это только импотром (в смысле одной командой TransferDatabase), т.е. без импорта в себя и последующего экспотра в другую; что-то не могу сообразить - как ...

  Ответить  
 
 автор: osmor   (04.04.2007 в 15:18)   личное сообщение
 
 

http://hiprog.com/forum/read.php?id_forum=1&id_theme=1325&page=1

  Ответить  
 
 автор: rokin   (05.04.2007 в 12:01)   личное сообщение
 
 

Вот я сделал, но ошибка- не может найти таблицу источник. Посмотрел Ваш вариант (приаттаченный по ссылке, все пректрасно работает!), вроде бы как одинаково, ан нет ... В чом тут заковырка?



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


  Ответить  
 
 автор: osmor   (05.04.2007 в 13:01)   личное сообщение
 
 

Так у ВАс все совсем не так...
посмотрите внимательно мой код. нужно получить объект Application, а не database

  Ответить  
 
 автор: rokin   (05.04.2007 в 15:25)   личное сообщение
 
 

Черт, я что-то недогоняю, сделал через объект 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

  Ответить  
 
 автор: osmor   (05.04.2007 в 15:34)   личное сообщение
 
 

уберите If tb.Attributes = 0 Then
добавлено..
хотя это наверное не в тему...
проверьте по шагам какое имя у TB

  Ответить  
 
 автор: rokin   (05.04.2007 в 16:05)   личное сообщение
 
 

с аттрибуты не помогло, по шагам как бы все хавает, путь к базе находит, потом выдает ошибку, но имя таблицы при наведении курсора подсвечивает правильно "Batch"

  Ответить  
 
 автор: osmor   (05.04.2007 в 16:15)   личное сообщение
 
 

а таблицы случаем не связанные?

  Ответить  
 
 автор: rokin   (05.04.2007 в 16:18)   личное сообщение
 
 

все, огромное спасибо, ошибку нашел, заработало, хотя осталось недопонимание, почему нужно обязательно через объект application делать, как бы интуитивно "да", но мутно ...

  Ответить  
 
 автор: osmor   (05.04.2007 в 16:25)   личное сообщение
 
 

потому что docmd - принадлежит объекту ACCESS.application
в dao.database нет такого объекта

  Ответить  
 
 автор: rokin   (05.04.2007 в 16:32)   личное сообщение
 
 

точно ...

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList