Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2012, 12:42   #1
GES
Пользователь
 
Регистрация: 27.08.2008
Сообщений: 23
По умолчанию Преобразовать в локальную таблицу

Добрый день.
Ребята, подскажите, пожалуйста, как преобразовать связанную таблицу в локальную с помощью VBA?
(в VBA я разбираюсь хорошо, просто под Access не могу нигде найти эту команду)

Последний раз редактировалось GES; 06.09.2012 в 14:00.
GES вне форума Ответить с цитированием
Старый 06.09.2012, 15:32   #2
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Добрый день.
Есть несколько вариантов, которые спадают мне на голову сейчас:
1. Произвести импорт (не связь)
2. Содать запрос на создание таблицы
gluk_fm вне форума Ответить с цитированием
Старый 06.09.2012, 18:02   #3
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте GES.
"..преобразовать связанную таблицу локальную с помощью VBA..", как рекомендовал gluk_fm,
можно подобным кодом:
Код:
Sub linksTableToDB()
'запрос обращающийся к системной таблице, тип объекта 6 - прилинкованные таблицы
Const sQsysExt = "SELECT Name FROM MSysObjects WHERE Type=6"
'часть запроса для проверки существования таблицы с именем.., тип 1 - таблицы БД
Const sQsysInt = "select * from MSysObjects WHERE (Type=1 or Type=6) and name='"
'часть SQL конструкции для создания таблицы
Const sQ = "SELECT * INTO "

Dim cn As New ADODB.Connection 'переменная для ADO подключения
Dim rs As New ADODB.Recordset 'переменная для ADO рекордсета
Dim s$ 'текстовая переменная

Set cn = CurrentProject.Connection 'подключение к текущей БД
Set rs = cn.Execute(sQsysExt) 'открыть рекордсет
Do Until rs.EOF 'цикл перебора записей рекордсета,
' EOF - указатель завершения набора звписей
    s = rs(0) + "_int" 'имя для новой таблицы
    If cn.Execute(sQsysInt + s + "'").EOF Then 'таблицы с именем <s> нет
        s = sQ + s + " FROM " + rs(0) 'формирование исполняемой SQL конструкции
        cn.Execute s 'создание таблицы
    End If
    rs.MoveNext 'переход к следующей записи
Loop
'закрыть переменные, очистить память
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
Успехов Вам.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 07.09.2012, 10:09   #4
GES
Пользователь
 
Регистрация: 27.08.2008
Сообщений: 23
По умолчанию

Спасибо, за ответы.
Придумал способ попроще.
Связанную обозвал другим именем(ей все равно как называться), с нужным именем создал пустую и 2 скрипта SQL, один DELETE, второй INSERT (скрипты вызываю из Excel)
Но догадываюсь, что где-то в недрах VBA есть команда "Преобразовать в локальную таблицу"
GES вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно сделать локальную сеть Altera Свободное общение 19 04.01.2012 17:32
установить локальную сеть alex(21) Компьютерное железо 8 29.05.2010 13:06
Преобразовать таблицу(Вопрос от новичка) Citizen^K Microsoft Office Excel 3 10.02.2010 11:53
VBA Преобразовать в диапазон таблицу king13 Microsoft Office Excel 4 16.10.2009 11:08
Как сделать локальную сеть diliana Операционные системы общие вопросы 8 17.06.2009 14:13