powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как программно переименовать таблицу во внешней БД
8 сообщений из 8, страница 1 из 1
как программно переименовать таблицу во внешней БД
    #39652959
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем
Мне нужно переименовать таблицу в базе данных, которая находится в другом файле
Мне известен только один метод:
Код: vbnet
1.
DoCmd.Rename "newName", acTable, "oldName"

, но он для текущей БД
...
Рейтинг: 0 / 0
как программно переименовать таблицу во внешней БД
    #39652965
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НастаевМне известен только один метод:жуткое дело

Настаевно он для текущей БДа другую не знаешь как получить?

Схематично

Через сервер автоматизации
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
dim objApp as object

Set objApp =GetObject("ПолноеИмяТвоейБД")
'известный тебе метод
objApp.Application.DoCmd.Rename "newName", acTable, "oldName"
'через DAO
objApp.Application.CurrentDb...'дальше смотри - Через DAO



Через DAO
Код: vbnet
1.
2.
3.
4.
dim db as object

Set db=DBEngine.OpenDatabase("ПолноеИмяТвоейБД")
db.TableDefs("oldName").Name="newName"


Через ADOX
Код: vbnet
1.
2.
3.
4.
5.
dim cat as object

Set cat =CreateObject("ADOX.Catalog")
cat.ActiveConnection="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & "ПолноеИмяТвоейБД"
cat("oldName").Name="newName"



Как-то так если коротенько. Т.к. всё дано схематично (и по памяти), то возможны неточности в коде.
Вероятно есть и другие способы, но быстро вспомнил эти.


да, и главный вопрос - ЗАНАФИГА?
...
Рейтинг: 0 / 0
как программно переименовать таблицу во внешней БД
    #39652966
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё запросом, но это не совсем переименование
Через сервер автоматизации
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
dim objApp as object
Set objApp =GetObject("ПолноеИмяТвоейБД")
'известный тебе метод
...
'через DAO
...
'запросом можно использовать ADO (представлено) или DAO
    With objApp.Application.CurrentProject
        .Execute("SELECT * INTO newName FROM oldName")
        .Execute("DROP TABLE oldName")
    End With
...

...
Рейтинг: 0 / 0
как программно переименовать таблицу во внешней БД
    #39652967
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исправил...
ПанургЕщё запросом, но это не совсем переименование
Через сервер автоматизации
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
dim objApp as object
Set objApp =GetObject("ПолноеИмяТвоейБД")
'известный тебе метод
...
'через DAO
...
'запросом можно использовать ADO (представлено) или DAO
    With objApp.Application.CurrentProject.Connection
        .Execute("SELECT * INTO newName FROM oldName")
        .Execute("DROP TABLE oldName")
    End With
...


...
Рейтинг: 0 / 0
как программно переименовать таблицу во внешней БД
    #39653118
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь
Я сейчас делаю массовое переименование таблиц и полей в них с русского на английский. Когда закончу выложу свой вариант. Вдруг кому-то понадобится.
...
Рейтинг: 0 / 0
как программно переименовать таблицу во внешней БД
    #39653190
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НастаевСпасибо за помощь
Я сейчас делаю массовое переименование таблиц и полей в них с русского на английский. Когда закончу выложу свой вариант. Вдруг кому-то понадобится.О сколько раз твердили миру-пользоваться латиницей изначально
...
Рейтинг: 0 / 0
как программно переименовать таблицу во внешней БД
    #39653402
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сведению ТС Инструмент для поиска и замены названий SearchForText_v42 поможет решить часть Ваших проблем (а возможно и все).

"Всё уже украдено до нас..." с. "Операция Ы и другие приключения Шурика"
...
Рейтинг: 0 / 0
как программно переименовать таблицу во внешней БД
    #39653468
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Joss, спасибо за сслочку

Всё же я поделюсь кое-чем, если кому-то понадобится переименовать таблицы только в связанной базе данных с целью их совместимости с MySQL, например. Переименованные таблицы прилинковываются к основной БД, а к ним старые русские запросы ))))
При этом не нужно ничего поправлять в коде программы
Option Compare Database
Option Explicit

Dim db2 As New Access.Application
Dim rst As Recordset

Private Sub Выполнить_все_шаги_для_переименования_связанных_таблиц()

DoCmd.Echo 0

Set rst = CurrentDb.OpenRecordset("Rename")

DoCmd.RunSQL ("UPDATE Rename SET new = Replace(LCase([new]),' ','_')")
Переименование_таблиц_по_списку
Замены_в_связанных_полях_БД2
Перезалить_прилинкованные_таблицы
Создать_запросы

Set db2 = Nothing
Set rst = Nothing
DoCmd.Echo 1

MsgBox "Done!"

End Sub

Private Sub Переименование_таблиц_по_списку()

db2.OpenCurrentDatabase (полное_имя_файла_с_данными)

On Error Resume Next
rst.MoveFirst
Do Until rst.EOF

If rst!old <> rst.Name Then

db2.Application.DoCmd.Rename rst!New, acTable, rst!old
DoCmd.Rename rst!New, acTable, rst!old

End If

rst.MoveNext

Loop
On Error GoTo 0

End Sub

Private Function после_замен(ByRef старая As String) As String

rst.MoveFirst
While Not rst.EOF

старая = Replace(старая, "[" & rst!old & "].", "[" & rst!New & "].")
старая = Replace(старая, " " & rst!old & ".", " " & rst!New & ".")
старая = Replace(старая, "FROM [" & rst!old & "] ", "FROM [" & rst!New & "] ")
старая = Replace(старая, "FROM " & rst!old & " ", "FROM " & rst!New & " ")
старая = Replace(старая, "FROM " & rst!old & ";", "FROM " & rst!New & ";")
старая = Replace(старая, "(" & rst!old & ".", "(" & rst!New & ".")
rst.MoveNext

Wend

после_замен = старая

End Function

Private Sub Замены_в_связанных_полях_БД2()

Dim t As TableDef
Dim f As Field
Dim p As String

On Error Resume Next
For Each t In db2.Application.CurrentDb.TableDefs

If Not t.Name Like "~*" And Not t.Name Like "msys*" Then

For Each f In t.Fields

f.Properties("RowSource") = после_замен(f.Properties("RowSource"))

Next f

End If

Next
On Error GoTo 0

End Sub

Public Sub Перезалить_прилинкованные_таблицы()

Dim dbs As Object
Dim tdf As Object
Dim s As String

s = полное_имя_файла_с_данными

'ссылка на БД
Set dbs = CurrentDb

'для каждой таблицы
For Each tdf In dbs.TableDefs

'если таблица из внешней БД
If tdf.SourceTableName <> "" Then

Таблицы.Удалить tdf.Name
DoCmd.TransferDatabase acLink, "Microsoft Access", s, acTable, tdf.Name, tdf.Name

End If

Next tdf

'следы
Set tdf = Nothing
Set dbs = Nothing

End Sub

Private Sub Создать_запросы()

On Error Resume Next
rst.MoveFirst
Do Until rst.EOF

If rst!old <> rst.Name Then

Создать_запрос rst!old, "Select * From [" & rst!New & "]"

End If

rst.MoveNext

Loop
On Error GoTo 0

End Sub
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как программно переименовать таблицу во внешней БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]