powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Блокировка таблицы ядром
20 сообщений из 20, страница 1 из 1
Блокировка таблицы ядром
    #39725796
rpeu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

После экспорта отчета (через DoCmd.OutputTo , "...", acFormatXLS, ...) и его закрытия невозможно переименовать таблицу-источник отчета.
Даже если закрыть все формы - получаю ошибку "Таблица не может быть заблокирована ядром".

На сколько я понимаю остается открытым соединение таблицы и отчета.
Как его закрыть?
Recordset.Close тут не сработает же ("Это свойство доступно только в файлах ADP").
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39725802
rpeu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если экспортирую вручную через "Внешние данные -> Экспорт в Excel" никаких проблем нет.

А автоматический экспорт через Sub Export_Click() дает ошибку.
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39725808
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rpeu, для таких вопросов есть стандартна попытка после экспорта сделать DoEvents
А если не помжоет, смотреть в процессах - висит там эксель или нет(ибо висит?)
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39725812
rpeu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверинrpeu, для таких вопросов есть стандартна попытка после экспорта сделать DoEvents
А если не помжоет, смотреть в процессах - висит там эксель или нет(ибо висит?)

OpenForms = 0
В диспетчере пусто (если я конечно его закрою).

Ану попробую автозапуск отключить, может поможет.
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39725822
rpeuПосле экспорта отчета (через DoCmd.OutputTo , "...", acFormatXLS, ...) и его закрытия невозможно переименовать таблицу-источник отчета
1. Для какой цели нужно "переименовать таблицу"?
2. Если после экспорта отчета в Ёксель вы получаете приемлемый вид на листе, значит отчет простейший (без заголовков и примечаний). Вопрос - экспорт именно отчета, а не запроса, например?
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39725827
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rpeu,
А с методом TransferSpreadsheet это проявляется? (кстати считаю переименование таблиц очень плохо-зачем Вам это)
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39725832
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkurpeu,
А с методом TransferSpreadsheet это проявляется? (кстати считаю переименование таблиц очень плохо-зачем Вам это)

суть разве не в том, что таблица в итоге остается заблокирована? Переименование - это уже побочный эффект
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39725838
rpeu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов АнатолийrpeuПосле экспорта отчета (через DoCmd.OutputTo , "...", acFormatXLS, ...) и его закрытия невозможно переименовать таблицу-источник отчета
1. Для какой цели нужно "переименовать таблицу"?
2. Если после экспорта отчета в Ёксель вы получаете приемлемый вид на листе, значит отчет простейший (без заголовков и примечаний). Вопрос - экспорт именно отчета, а не запроса, например?

1. Таблица для определенного года. Выбранный год - "Таблица", остальные "Таблица <<год>>". Соответственно после выбора года их переименовывает.
2. Экспорт отчета, в котором есть группировка и ряд вычисляемых полей. Вид не до конца приемлемый. Вычисляемые поля экспортирует некорректно.

DoCmd.OutputTo acOutputReport, "Номинации", acFormatXLS, CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Номинация на " & NominationsDate & ".xls", True, , , acExportQualityScreen

[quot sdku]rpeurpeu,
А с методом TransferSpreadsheet это проявляется?
А какой параметр в TableName вписать? У меня отчет с группировкой и вычисляемыми полями без сохранения всего в отдельную таблицу.
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39725867
rpeu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если не получится докопаться до причины блокировки - сделаю через ж: DoCmd.RunSavedImportExport, так не блокирует.
Но надеюсь получится как-то закрыть подключение :)
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39725896
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rpeu,
Не вкурю что же Вы делаете-пока понял так:создать в Aксе отчет (с отбором нужных данных, в нем прописывайте какой хотите заголовок,а не меняйте имя таблицы) и импортировать его в Ёксель-так или нет?
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39725939
rpeu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkurpeu,
Не вкурю что же Вы делаете-пока понял так:создать в Aксе отчет (с отбором нужных данных, в нем прописывайте какой хотите заголовок,а не меняйте имя таблицы) и импортировать его в Ёксель-так или нет?

Да, все так.

Потом закрываю отчет и пытаюсь переименовать таблицу через DoCmd.Rename - получаю ошибку, таблица уже используется.
Мне проще в 12 строк переименовать мои таблицы чем усложнять код зависимостью от выбранного года:

Рабочая таблица: Табл
Архив: Табл 2019

Я делаю так: Табл -> Табл 2018, Табл 2019 -> Табл. Теперь у меня рабочий 2019 год.
В отдельной функции переименование. Могу хоть 10 лет туда впихнуть не меняя расчетную часть.
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39725982
Такое впечатление, что отчет исчезает с экрана, но остается открытым.
Что у вас в коллекции Reports после закрытия?
rpeuDoCmd.OutputTo acOutputReport, "Номинации", acFormatXLS, CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Номинация на " & NominationsDate & ".xls",... Странный винегрет. Попробуйте путь к файлу собрать заранее, а не внутри команды OutputTo.

rpeuЭкспорт отчета, в котором есть группировка и ряд вычисляемых полей. Вид не до конца приемлемый Посмотрите здесь

rpeuМне проще в 12 строк переименовать мои таблицы чем усложнять код зависимостью от выбранного года: Ну и напрасно.
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39726054
rpeu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов АнатолийТакое впечатление, что отчет исчезает с экрана, но остается открытым.
Что у вас в коллекции Reports после закрытия?

Reports.Count = 0

Кривцов АнатолийСтранный винегрет. Попробуйте путь к файлу собрать заранее, а не внутри команды OutputTo.

Не помогло
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39726134
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rpeusdkurpeu,
Не вкурю что же Вы делаете-пока понял так:создать в Aксе отчет (с отбором нужных данных, в нем прописывайте какой хотите заголовок,а не меняйте имя таблицы) и импортировать его в Ёксель-так или нет?Да, все так.Ну так и сделайте: "создать в Aксе отчет (с отбором нужных данных, в нем прописывайте какой хотите заголовок,а не меняйте имя таблицы" и в конце процедуры VBA напишите
Код: vbnet
1.
DoCmd.Close acReport, "ИмяОтчета"
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39726383
rpeu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkurpeuпропущено...
Да, все так.Ну так и сделайте: "создать в Aксе отчет (с отбором нужных данных, в нем прописывайте какой хотите заголовок,а не меняйте имя таблицы" и в конце процедуры VBA напишите
Код: vbnet
1.
DoCmd.Close acReport, "ИмяОтчета"



Я так и делаю. Таблица остается в использовании После(!) закрытия отчета, если в отчете использовался DoCmd.OutputTo!
После ручного экспорта и закрытия отчета проблем с переименовыванием таблицы нет.

Баг Access?
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39726507
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rpeu,
так Вы пробовали TransferSpreadsheet или нет-не понял.(насчет аргументов-читайте HELP)
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39726525
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку:rpeu.....После экспорта отчета (через DoCmd.OutputTo , "...", acFormatXLS, ...) когда Вы выполняете экспорт вручную(говорите что все работает) используется метод TransferSpreadsheet, а OutputTo это не совсем экспорт
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39726537
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу,еще не всеКривцов Анатолий...А какой параметр в TableName вписать? У меня отчет с группировкой и вычисляемыми полями без сохранения всего в отдельную таблицу.Сохранять отчет в таблицу-полный нонсес.
Читать HELP религия не позволяет.
имяТаблицы - Строковое выражение, представляющее имя таблицы Microsoft Access, в которую импортируются или связываются данные или из которой данные экспортируются. Допускается также указание имени запроса на выборку Microsoft Access, результаты которого экспортируются в электронную таблицу.
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39730075
rpeu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuВдогонку:rpeu.....После экспорта отчета (через DoCmd.OutputTo , "...", acFormatXLS, ...) когда Вы выполняете экспорт вручную(говорите что все работает) используется метод TransferSpreadsheet, а OutputTo это не совсем экспорт

С экспортом через TransferSpreadsheet проблема не проявляется, но не подходит результат.
При ручном экспорте используется OutputTo. Попробуйте сами оба варианта и сравните.

Буду пытаться выяснить какой процесс блокирует таблицу.
...
Рейтинг: 0 / 0
Блокировка таблицы ядром
    #39730330
AlexDE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rpeu,

А зачем вообще так усложнять

1. Создайте где нибудь заготовку в xls с правильно отформатированными полями. в красках и с картинками, как душе угодно.

2. Копируйте эту заготовку в нужную вам папку с нужным названием.

3. Сливайте в файл инфу с РекордСета. Запрос составить сможете.

Примерно так.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Function ExcelExport(SQLString As String, ZielFile As String)

Dim xl As Object, xlWb As Object
Dim rs As DAO.Recordset
z = ZielFile
Set xl = CreateObject("Excel.Application")
Set xlWb = xl.Workbooks.Open(z)
xl.Visible = True
Set rs = CurrentDb.OpenRecordset(SQLString)
xl.Workbooks(1).Worksheets("Tabelle1").Cells(8, 1).CopyFromRecordset rs
xlWb.Save
xlWb.Close
Set xlWb = Nothing
Set xl = Nothing
rs.Close
Set rs = Nothing

End Function


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


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