|
|
|
| Народ, нужна ваша помощь!!!
Ломаю мозг над созданием таблицы с курсами...
Проблема в том, что есть исходная в базе, которая тащит данные с сайта ЦБ, и все бы хорошо, но значений для праздников и выходных нет.
Как проставить курсы к этим датам за предыдущий день где такие курсы есть?
На сайте нашел форму для получения курсов, но там на конкретную дату только, а мне нуже именно массив, чтобы потом в Эксель передать... К тому же выходит ошибка по маске ввода | |
|
| |
|
|
|
| вотза промежуток
http://hiprog.com/index.php?option=com_content&task=view&id=461 | |
|
| |
|
20 Кб. |
|
| Реализовал вот так... (Запрос 1 в файле) Соответственно находит курс для любой даты независимо от дня недели или праздников.
Возникла еще проблема... при переводе в Excel (через сводную таблицу, которая ссылается на Запрос1)возникает ошибка "Неопределенная функция". Как этот баг обойти? (Только не созданием отдельной таблицы с данными на основе этого запроса, т.к. хотелось бы, чтобы перед обновлением сводной в экселе не нужно было бы предварительно запускать запрос на создание (т.к. это практически каждый день придется делать) | |
|
| |
|
|
|
|
как раз для таких случаев рекомендуют держать таблицу Календарь, содержащую все даты в том числе выходные, праздничные и т.п. дни.
это упрощает схему БД, упрощает запросы
увеличивает надежность и производительность | |
|
| |
|
|
|
| Такая таблица есть, только задача другая. В Экселе "туева хуча" всяких отчетов, которые завязаны на курсы. Причем главное требование отсутствие сводных и прочего, т.к. пользователи - непродвинутые.
Так вот и хочется реализовать сводную с курсами на скрытом листе, чтобы ВПРом подтаскивать их на листы отчета (уже простого), т.к. руками проставлять в диапазоны - лень. А так - нажал обновить сводную и все ОК, свежие курсы подгрузились. И вроде все уже - реализовал и времени 10 мин. заняло, да ошибка эта долбаная вылазит. | |
|
| |
|
|
|
| вопросы следующие
зачем каждый раз закачивать курсы предыдущих периодов - они не меняются задним числом, это исторические данные. достаточно закачать один раз и потом добавлять ежедневно.
если нет курса ЦБ на этот день - как по учетной политике берется актуальный курс - всегда и однозначно автоматом на последний день курса ЦБ РФ или он может быть поправлен ручками | |
|
| |
|
17 Кб. |
|
| 5 минут уже качает курсы последних десяти лет.
дошел до 2001-го
больше терпеть не стал :)
все заполняется нормально - дырок и пропусков нет
в эксель выгружается вообще без проблем, только медленно
=> | |
|
| |
|
|
|
| Так каждый раз выкачивать и не обязательно. Для ретроспективных данных можно один раз создать таблицу и потом юнионить с текущим годом например... или месяцем. (Это каждый дрочит как хочет).
В настоящий момент алгоритм с курсами уже реализован на базе таблицы с курсами, которая включает пропуски для выходных и праздников. Логично, что для пропусков проставляется курс за предыдущ. дату, где он есть.
Проблема в том, что перед обновлением через пару дней того или иного отчета в этой таблице должно быть уже на 2 даты с курсами больше (ну или соответственно прошедшему периоду). А реализовано все так, что для обновления этой таблицы нужно залезть в базу и пересоздать таблицу с курсами, т.е. чтобы добавить эти 2 свежие даты.
Поэтому "от нех... делать" решил модернизировать этот процесс, чтобы конечный запрос был на выборку, т.е. подключившись к этому запросу через эксель, ябы просто нажимал "обновить сводную" и вуаля.
Вот только как победить теперь эксель? Может кто-то все-таки знает? Или баг 2007 Access. (Excel 2003)
В Excel экспортируется без проблем, но через сводную - хрен. А со сводной - очень красиво все получится... с одной кнопки весь отчет!!! Ну очень хотца сделать!!!!! | |
|
| |
|
|
|
|
что для обновления этой таблицы нужно залезть в базу и пересоздать таблицу с курсами, т.е. чтобы добавить эти 2 свежие даты
|
это нормально - только не нужно пересоздавать таблицу нужно просто добавиьть две записи
А со сводной - очень красиво все получится... с одной кнопки весь отчет!!! Ну очень хотца сделать!!!!!
|
я нифига не понял | |
|
| |
|
|
|
| Объясняю...
Есть 20-30 отчетов, где неоходимы курсы за каждый день. Причем связывать их с одной книгой эксель, содержащей эти курсы - лень и работает долго. Руками проставлять - гемор. Пересоздавать таблицу - также лениво (да и 2 записи добавить - тоже, т.к. все-равно надо залезть в базу, т.е. открыть файл Access, найти глазками этот запрос, щелкнуть на нем два раза, подтвердить создание/добавление данных в таблицу, закрыть базу. Только потом лезем в Excel и жмем "обновить данные"
Через Эксель построена вся отчетность. На основе сводной таблицы в Эксель (при ее создании источник данных выбираем - "во внешнем источнике", выбираем MS Access и соответствующий файл с базой данных, где подключаемся к конкретному запросу.
Если запрос будет на выборку (как в реализованом мной прикрепленном файле), то появившиеся свежие даты будут отражатся там автоматически при обновлении сводной (т.к. каждый раз при таком обновлении сводной запускается запрос в Access БЕЗ ОТКРЫТИЯ САМОЙ БД!!! т.е. с нажатия одной кнопки "обновить данные в сводной" мы передаем свежие данные в Excel)
Вот. Происходит это ч/з MS Query, он-то и выдает эту ошибку... как я понимаю...
Ошибка - "Неопределенная функция CURS_USD (или CURS_EURO) | |
|
| |
|