Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не обновляется список таблиц в базе / 25 сообщений из 25, страница 1 из 1
20.12.2017, 10:09
    #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
20.12.2017, 10:26
    #39572510
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляется список таблиц в базе
BlackeAngel,

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

Да, и очень рекомендую все переменные объявлять явно, во всех модулях поставить Option Explicit, а в настройках редактора VBA галочку Require Variable Declarations, иначе можете напороться на непредсказуемое поведение, если случайно ошибетесь в названии переменной или Акс задаст неверный тип данных вашей неявной переменной.
...
Рейтинг: 0 / 0
20.12.2017, 10:28
    #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
20.12.2017, 10:33
    #39572520
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляется список таблиц в базе
MrShinВ коде нужно будет для переменных базы данных считать свежее значение CurrentDb с новыми таблицами, Dbengine(0)(0), например, не увидит новых таблиц, пока насильно не обновишь через TableDefs.Refresh.Человек работает через ADO, соответственно в данном случае уместно
Код: vbnet
1.
Catalog.Tables.Refresh

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


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

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



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


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


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



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



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


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