powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Экспорт в Excel, проблема при отсутствии данных.
17 сообщений из 17, страница 1 из 1
Экспорт в Excel, проблема при отсутствии данных.
    #32386891
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перекрестный запрос, результат довольно запутанной выборки из нескольких запросов, экспортируется в Excel, в Excel формируется отчет, добавляются поля со всякой аналитикой и т.д.
Формат запроса (в обратном - с конца- порядке):
1. планируемые данные за текущий месяц
2. реальные данные за текущий месяц
3. данные за этот же месяц прошлого года
4. тоже, но позапрошлого года.
Лист Excel, по сути - шаблон, т.е. число столбцов и их порядок не меняется. Вся проблема в том, что при отсутствии (на момент запроса) данных на текущий месяц - его столбец в запросе вообще отсутствует. При экспорте на это место на листе Excel попадают данные последнего столбца, и аналитика в Excel показывает чепуху.
Никак не получается, заставить в такой ситуации, попадать последний столбец на своё место.
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32386901
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каким образом экспортируешь?
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32386904
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Надо дописать к перекрестному селекту в конце:

in ("two","three","one")

где в скобках стоит список названий полей в нужном порядке. Тогда даже если какого-то столбца в результате запроса нет - столбцы будут браться не из результата запроса, а из этого списка.
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32386983
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.Экспортирую кодом из Access, конкретнее - функцией fnCopyFromRecordset на нужное место листа переношу rst (перекрестный запрос).
2.Сходу не понял насчет "дописать в конце". Названия столбцов каждый месяц меняются, как быть? А сам перекрестный запрос делается из сводного запроса, в котором объединены запросы на выборку, в некоторые из них тоже входят запросы......Хотя способ - интуичу - элегантнее моего.
Я пошел путем "в лоб". Исходя из того, что "пропадать" может именно столбец с текущим месяцем ( предпоследним по счету), я решил сразу после переноса данных на лист переносить данные последнего столбца на "правильное" место - на 1 столбец правее. Подскажите:
Пытаюсь 5 ячеек из столбца 8 перетащить в столбец 9.
Код: plaintext
1.
2.
3.
4.
5.
6.
Set xlsSheet = xlsBook.Worksheets( 1 )
With xlsSheet
.range(.cells( 5 ,  8 ), .cells( 9 ,  8 )).Select
 ляляля.Cut
.range(.cells( 5 ,  9 ), .cells( 9 ,  9 )).Select
ляляля.Paste
End With

Проблема с синтаксисом команды на месте"ляляля". Пробую написать:
Код: plaintext
.Selection.Cut
. Вываливаюсь в ошибку.
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387007
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
авторНазвания столбцов каждый месяц меняются, как быть?
Менять селект программно.

Кстати, затирать clipboard программно - это нехорошо. Юзеры спасибо не скажут.
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387009
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Менять селект программно.
Это как?
А по синтаксису Excel так и не подсказали...
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387011
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
авторМенять селект программно.
Это как?
Команда OpenRecordset принимает в качестве параметра стринг, в котором сидит селект. Этот стринг не обязан быть одной длинной константой. Какие-то его части могут вычисляться.

авторА по синтаксису Excel так и не подсказали...
Я не ответил, потому что не знаю. Другие пока не ответили, потому что выходной.
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387037
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Benzin
B>А по синтаксису Excel так и не подсказали...

Тот кусок кода, что ты привел наверно макрорекордер нарисовал :)
Я бы написал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
...
With xlBook
    .Range(.Cells(), .Cells()).Cut
    .Paste Cells()
End With
...


Хотя можно конечно и с Selection помучиться. По моему у объекта Worksheet нет метода возвращающего Selection, поэтому до него тебе придется, скорее всего, добираться ч.з Application. т.е.
Код: plaintext
.Application.Selection.Cut


2 Владимир Саныч
ВС>Кстати, затирать clipboard программно - это нехорошо. Юзеры спасибо не скажут.

Я тут недавно отучал пользователей хранить документы в корзине
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387112
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я бы предложил не париться:
Код: plaintext
1.
Range( "I5:I9" ).Value = Range( "H5:H9" ).Value
Range( "H5:H9" ).Value = ""

И никакого клипборда
Хотя ёкселевский "клипборд" затирать таким образом, как было написано, не страшно. Он сам сбрасывается при любом удобном для него случае
Например, для вставки ячеек в защищенный лист надо обязательно снять защиту не только до вставки, но и до копирования.
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387113
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AlexJuice
Да, твой вариант получше будет. Тем более, что они этот метод Paste меняют от версии к версии :(
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387140
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
За подсказку по Excel - спасибо.

2 Владимир Саныч
А ведь получается!!! Правда есть вопросы:
1. Добавил IN(...) в конец сохраненного запроса. Тупое перечисление всех названий столбцов не прошло. Получилось, когда в списке остались только названия, которые "в прошлой жизни" были содержимым полей. Почему?
2. До добавления IN, в конструкторе запроса было поле "Month" и у него было указано: "Группировка", "Заголовки столбцов". После добавления IN(...) и сохранения запроса у поля "Month" в строке "Перекрестный запрос" вообще ничего нет. У нового поля указано: " Выражение ", "Заголовки столбцов". Заменил "Выражение" на " Группировка " - возвращяемых записей стало больше. Вернул " Выражение " - запрос стал ругаться, что у заголовках столбцов должно быть указано "Группировка". Чего это он?
3. А если удалить из запроса поле "Month", то для нового поля можно указать "Группировка". Как лучше то?
4. Очень стыдно спрашивать, но напрочь отключилась соображалка(воскресенье!): как вычесленное значение перевести в название столбца? Т.е. в скобках у IN должно быть Month(Date()), Month(Date())-1... А как кавычки то добавить? Через CStr?
5. Уже знаю о Вашем отношении к затиранию clipboard, но тем не менее: а какой способ (мой - "механический" или Ваш) более надёжный в плане возможных ошибок в ситуациях "данных за текущий месяц нет" и "данные есть"?
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387145
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
На большинство вопросов у меня ответа нет, прошу прощения. Могу ответить только про кавычки: их надо удваивать.
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387174
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
Рано я обрадывался. В коде присваиваю переменной strIN значение:
strIN = " IN (""" & Month(Date()) - 2 & """,""" & Month(Date()) - 1 & """,""" & Month(Date()) & """;)"
..............
set rst = ....("Select [ПерекрЗапр].* From [ПерекрЗапр]" & strIN)
Получаю: "Ошибка синтаксиса в предложении From"
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387177
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Во-первых, IN и т.д. должно быть частью перекрестного запроса, а не обычного, который обращается к перекрестному.

Во-вторых, нехорошо присоединять числа к стрингу напрямую, потому что Аксесс их может неправильно отформатировать. Их лучше форматировать явно. Вместо ...& Month(Date()) - 2 &... лучше сделать ...& CStr(Month(Date()) - 2) &...
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387187
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
быть частью перекрестного запроса
Т.е. перед словом In.. должно быть SQL-представление перекрестного запроса?
А во что заключить Str(...)? В апострофы или кывычки?
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387188
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
авторТ.е. перед словом In.. должно быть SQL-представление перекрестного запроса?
Да.

авторА во что заключить Str(...)? В апострофы или кывычки?
Не надо ни во что заключать. Я ведь привел пример.
...
Рейтинг: 0 / 0
Экспорт в Excel, проблема при отсутствии данных.
    #32387191
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Экспорт в Excel, проблема при отсутствии данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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