|
как программно переименовать таблицу во внешней БД
|
|||
---|---|---|---|
#18+
Привет всем Мне нужно переименовать таблицу в базе данных, которая находится в другом файле Мне известен только один метод: Код: vbnet 1.
, но он для текущей БД ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 02:37 |
|
как программно переименовать таблицу во внешней БД
|
|||
---|---|---|---|
#18+
НастаевМне известен только один метод:жуткое дело Настаевно он для текущей БДа другую не знаешь как получить? Схематично Через сервер автоматизации Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Через DAO Код: vbnet 1. 2. 3. 4.
Через ADOX Код: vbnet 1. 2. 3. 4. 5.
Как-то так если коротенько. Т.к. всё дано схематично (и по памяти), то возможны неточности в коде. Вероятно есть и другие способы, но быстро вспомнил эти. да, и главный вопрос - ЗАНАФИГА? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 04:46 |
|
как программно переименовать таблицу во внешней БД
|
|||
---|---|---|---|
#18+
Ещё запросом, но это не совсем переименование Через сервер автоматизации Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 04:56 |
|
как программно переименовать таблицу во внешней БД
|
|||
---|---|---|---|
#18+
исправил... ПанургЕщё запросом, но это не совсем переименование Через сервер автоматизации Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 04:58 |
|
как программно переименовать таблицу во внешней БД
|
|||
---|---|---|---|
#18+
Спасибо за помощь Я сейчас делаю массовое переименование таблиц и полей в них с русского на английский. Когда закончу выложу свой вариант. Вдруг кому-то понадобится. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 11:32 |
|
как программно переименовать таблицу во внешней БД
|
|||
---|---|---|---|
#18+
НастаевСпасибо за помощь Я сейчас делаю массовое переименование таблиц и полей в них с русского на английский. Когда закончу выложу свой вариант. Вдруг кому-то понадобится.О сколько раз твердили миру-пользоваться латиницей изначально ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 12:46 |
|
как программно переименовать таблицу во внешней БД
|
|||
---|---|---|---|
#18+
К сведению ТС Инструмент для поиска и замены названий SearchForText_v42 поможет решить часть Ваших проблем (а возможно и все). "Всё уже украдено до нас..." с. "Операция Ы и другие приключения Шурика" ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 15:48 |
|
как программно переименовать таблицу во внешней БД
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2018, 17:18 |
|
|
start [/forum/topic.php?fid=45&fpage=50&tid=1611399]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 274ms |
total: | 431ms |
0 / 0 |