powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не обновляется список таблиц в базе
25 сообщений из 25, страница 1 из 1
Не обновляется список таблиц в базе
    #39572486
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не обновляется список таблиц в базе после вот этого кода
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Sub ExceltoAccess()
    Worktable = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    BaseName = Worktable & "\" & ActiveWorkbook.Name & ".mdb"
    Select Case CLng(Split(Application.Version, ".")(0))
        Case Is < 12
            dbConnectStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & BaseName & ";"
        Case Is >= 12
            dbConnectStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & BaseName & ";"
    End Select
    On Error Resume Next
    Set oAccess = GetObject(, "Access.Application")
    If Err.Number = 429 Then
        Set Catalog = CreateObject("ADOX.Catalog")
        Catalog.Create dbConnectStr
        Set Catalog = Nothing
        Set cnt = New ADODB.Connection
        cnt.Open dbConnectStr
        Set rs = CreateObject("ADODB.Recordset")
        sSQL = "SELECT * INTO [" & ActiveSheet.Name & "] FROM [Excel 12.0;HDR=YES;IMEX=1;DATABASE=" & ActiveWorkbook.FullName & "].[" & ActiveSheet.Name & "$]"
        Set rs = cnt.Execute(sSQL)
        cnt.Close
        Set sAccess = CreateObject("Access.Application")
        sAccess.Visible = True
        sAccess.UserControl = True
        sAccess.OpenCurrentDataBase (BaseName)
    Else
        basepath = oAccess.CurrentDb.Name
        If Err.Number = 91 Then
            Set Catalog = CreateObject("ADOX.Catalog")
            Catalog.Create dbConnectStr
            Set Catalog = Nothing
            Set sAccess = GetObject(, "Access.Application")
            sAccess.OpenCurrentDataBase (BaseName)
        End If
        oAccess.CurrentProject.Connection.Execute "SELECT * INTO [" & ActiveSheet.Name & "] FROM [Excel 12.0;HDR=YES;IMEX=1;DATABASE=" & ActiveWorkbook.FullName & "].[" & ActiveSheet.Name & "$]"
    End If
    Err.Clear
End Sub


Но если переоткрыть базу, то все таблицы отображаются. Как исправить эту неприятность?
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572510
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel,

В чем это выражается? Не видно новых таблиц в панели навигатора? Нажмите F5 в ней. В коде нужно будет для переменных базы данных считать свежее значение CurrentDb с новыми таблицами, Dbengine(0)(0), например, не увидит новых таблиц, пока насильно не обновишь через TableDefs.Refresh.

Да, и очень рекомендую все переменные объявлять явно, во всех модулях поставить Option Explicit, а в настройках редактора VBA галочку Require Variable Declarations, иначе можете напороться на непредсказуемое поведение, если случайно ошибетесь в названии переменной или Акс задаст неверный тип данных вашей неявной переменной.
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572514
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelНо если переоткрыть базу, то все таблицы отображаются. Как исправить эту неприятность?
Код: vbnet
1.
Application.RefreshDatabaseWindow



зачем это?
Код: vbnet
1.
2.
3.
4.
...
sSQL = "SELECT ...
        Set rs = cnt.Execute(sSQL)
...

пойдёт и так
Код: vbnet
1.
2.
3.
4.
...
sSQL = "SELECT ...
        cnt.Execute sSQL, Options:=128 
...
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572520
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinВ коде нужно будет для переменных базы данных считать свежее значение CurrentDb с новыми таблицами, Dbengine(0)(0), например, не увидит новых таблиц, пока насильно не обновишь через TableDefs.Refresh.Человек работает через ADO, соответственно в данном случае уместно
Код: vbnet
1.
Catalog.Tables.Refresh

Но, имхо, хватит в данном случае обновить окно.
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572524
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,
Спасибо за подсказку про запрос, но вот с
Код: vbnet
1.
Application.RefreshDatabaseWindow


Засада, тк excel не знает таких команд. Я ж запускаю из excel...
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572530
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelЗасада, тк excel не знает таких командНо окно же в Access.
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572531
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel, просмотрел твой код. Ты отрубил вывод ошибок?
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572532
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel
Код: vbnet
1.
sAccess.UserControl = True

Вот эта строка однозначно ошибка, нет такого свойства у Access
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572533
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,да, отрубил. Ну так окно Access свёрнуто. Иначе как?
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572534
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel, и вообще код местами бред какой-то.
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572537
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelexcel не знает таких команд
Код: vbnet
1.
sAccess.RefreshDatabaseWindow



А с обработкой ошибок полный швах, долго будете выуживать проблемы. Выключать нужно только в крайних случаях и на минимально возможное число команд
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572538
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelНу так окно Access свёрнуто
Причем тут Акцесс, если код в Экселе выполняется? Ошибки выдавать Эксель будет
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572542
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelПанург,да, отрубил. Ну так окно Access свёрнуто. Иначе как?Уж если наколбасил (мягонько говоря), то будь добр и ошибки обработать.
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572544
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelЗасада, тк excel не знает таких команд. Я ж запускаю из excel...Ну ты спросил про Access и получил ответ про него. Соотноси. Это я знаю что ты из Excel пишешь, но этого знают не все. Ответ тебе уже подсказали.
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572548
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург, ни
Код: vbnet
1.
sAccess.RefreshDatabaseWindow


Ни
Код: vbnet
1.
Application.RefreshDatabaseWindow


Не дают желаемого результата. Пока только F5 даёт нужный результат.
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572552
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelПанург, ни
Код: vbnet
1.
sAccess.RefreshDatabaseWindow



Ни
Код: vbnet
1.
Application.RefreshDatabaseWindow



Не дают желаемого результата. Пока только F5 даёт нужный результат.Ты пробовал коллекцию Tables обновить? 21047791
В новых версиях Access возможно что-то и изменили с окном базы данных.
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572568
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург, все, косяк найден, букву пропустил, а vba молчал. Переписал ещё раз и все нормально. Глюк короче был.
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572574
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelПереписалсовет, перепиши всё это по новому, все эти загрузки, создания объектов...
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572576
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,оптимальнее? По моему так самый короткий путь.
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572577
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelvba молчал.обиделся
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572579
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelПанург,оптимальнее? По моему так самый короткий путь.ЭТО?!
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572582
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург, в силу моих "знаний" - да
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572583
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelбукву пропустил, а vba молчал
Поэтому и нужно использовать Option Explicit и обработку ошибок. А так поиск каждого такого косыка будет занимать часы
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572602
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург, можете предложить оптимальное решение? Делитесь ;)
...
Рейтинг: 0 / 0
Не обновляется список таблиц в базе
    #39572604
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin, Согласен, Но это делаю в конце, когда точно не знаю. Да отключение ошибок стараюсь не использовать вообще, кроме категорически острой нужды.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не обновляется список таблиц в базе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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