Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Таблица курсов
 
 автор: katerpeller   (10.06.2010 в 14:25)   личное сообщение
 
 

Народ, нужна ваша помощь!!!

Ломаю мозг над созданием таблицы с курсами...
Проблема в том, что есть исходная в базе, которая тащит данные с сайта ЦБ, и все бы хорошо, но значений для праздников и выходных нет.

Как проставить курсы к этим датам за предыдущий день где такие курсы есть?

На сайте нашел форму для получения курсов, но там на конкретную дату только, а мне нуже именно массив, чтобы потом в Эксель передать... К тому же выходит ошибка по маске ввода

  Ответить  
 
 автор: osmor   (10.06.2010 в 15:18)   личное сообщение
 
 

вотза промежуток
http://hiprog.com/index.php?option=com_content&task=view&id=461

  Ответить  
 
 автор: katerpeller   (10.06.2010 в 16:39)   личное сообщение
20 Кб.
 
 

Реализовал вот так... (Запрос 1 в файле) Соответственно находит курс для любой даты независимо от дня недели или праздников.
Возникла еще проблема... при переводе в Excel (через сводную таблицу, которая ссылается на Запрос1)возникает ошибка "Неопределенная функция". Как этот баг обойти? (Только не созданием отдельной таблицы с данными на основе этого запроса, т.к. хотелось бы, чтобы перед обновлением сводной в экселе не нужно было бы предварительно запускать запрос на создание (т.к. это практически каждый день придется делать)

  Ответить  
 
 автор: Explorer   (10.06.2010 в 16:46)   личное сообщение
 
 


Реализовал вот так...



как раз для таких случаев рекомендуют держать таблицу Календарь, содержащую все даты в том числе выходные, праздничные и т.п. дни.

это упрощает схему БД, упрощает запросы
увеличивает надежность и производительность

  Ответить  
 
 автор: katerpeller   (10.06.2010 в 17:36)   личное сообщение
 
 

Такая таблица есть, только задача другая. В Экселе "туева хуча" всяких отчетов, которые завязаны на курсы. Причем главное требование отсутствие сводных и прочего, т.к. пользователи - непродвинутые.
Так вот и хочется реализовать сводную с курсами на скрытом листе, чтобы ВПРом подтаскивать их на листы отчета (уже простого), т.к. руками проставлять в диапазоны - лень. А так - нажал обновить сводную и все ОК, свежие курсы подгрузились. И вроде все уже - реализовал и времени 10 мин. заняло, да ошибка эта долбаная вылазит.

  Ответить  
 
 автор: Explorer   (10.06.2010 в 19:24)   личное сообщение
 
 

вопросы следующие

зачем каждый раз закачивать курсы предыдущих периодов - они не меняются задним числом, это исторические данные. достаточно закачать один раз и потом добавлять ежедневно.

если нет курса ЦБ на этот день - как по учетной политике берется актуальный курс - всегда и однозначно автоматом на последний день курса ЦБ РФ или он может быть поправлен ручками

  Ответить  
 
 автор: Explorer   (10.06.2010 в 19:28)   личное сообщение
17 Кб.
 
 

5 минут уже качает курсы последних десяти лет.

дошел до 2001-го

больше терпеть не стал :)

все заполняется нормально - дырок и пропусков нет
в эксель выгружается вообще без проблем, только медленно

=>

  Ответить  
 
 автор: katerpeller   (11.06.2010 в 10:26)   личное сообщение
 
 

Так каждый раз выкачивать и не обязательно. Для ретроспективных данных можно один раз создать таблицу и потом юнионить с текущим годом например... или месяцем. (Это каждый дрочит как хочет).

В настоящий момент алгоритм с курсами уже реализован на базе таблицы с курсами, которая включает пропуски для выходных и праздников. Логично, что для пропусков проставляется курс за предыдущ. дату, где он есть.

Проблема в том, что перед обновлением через пару дней того или иного отчета в этой таблице должно быть уже на 2 даты с курсами больше (ну или соответственно прошедшему периоду). А реализовано все так, что для обновления этой таблицы нужно залезть в базу и пересоздать таблицу с курсами, т.е. чтобы добавить эти 2 свежие даты.

Поэтому "от нех... делать" решил модернизировать этот процесс, чтобы конечный запрос был на выборку, т.е. подключившись к этому запросу через эксель, ябы просто нажимал "обновить сводную" и вуаля.

Вот только как победить теперь эксель? Может кто-то все-таки знает? Или баг 2007 Access. (Excel 2003)

В Excel экспортируется без проблем, но через сводную - хрен. А со сводной - очень красиво все получится... с одной кнопки весь отчет!!! Ну очень хотца сделать!!!!!

  Ответить  
 
 автор: Explorer   (11.06.2010 в 10:52)   личное сообщение
 
 


что для обновления этой таблицы нужно залезть в базу и пересоздать таблицу с курсами, т.е. чтобы добавить эти 2 свежие даты



это нормально - только не нужно пересоздавать таблицу нужно просто добавиьть две записи


А со сводной - очень красиво все получится... с одной кнопки весь отчет!!! Ну очень хотца сделать!!!!!



я нифига не понял

  Ответить  
 
 автор: katerpeller   (11.06.2010 в 11:10)   личное сообщение
 
 

Объясняю...
Есть 20-30 отчетов, где неоходимы курсы за каждый день. Причем связывать их с одной книгой эксель, содержащей эти курсы - лень и работает долго. Руками проставлять - гемор. Пересоздавать таблицу - также лениво (да и 2 записи добавить - тоже, т.к. все-равно надо залезть в базу, т.е. открыть файл Access, найти глазками этот запрос, щелкнуть на нем два раза, подтвердить создание/добавление данных в таблицу, закрыть базу. Только потом лезем в Excel и жмем "обновить данные"

Через Эксель построена вся отчетность. На основе сводной таблицы в Эксель (при ее создании источник данных выбираем - "во внешнем источнике", выбираем MS Access и соответствующий файл с базой данных, где подключаемся к конкретному запросу.

Если запрос будет на выборку (как в реализованом мной прикрепленном файле), то появившиеся свежие даты будут отражатся там автоматически при обновлении сводной (т.к. каждый раз при таком обновлении сводной запускается запрос в Access БЕЗ ОТКРЫТИЯ САМОЙ БД!!! т.е. с нажатия одной кнопки "обновить данные в сводной" мы передаем свежие данные в Excel)

Вот. Происходит это ч/з MS Query, он-то и выдает эту ошибку... как я понимаю...

Ошибка - "Неопределенная функция CURS_USD (или CURS_EURO)

  Ответить  
 
 автор: Explorer   (11.06.2010 в 11:22)   личное сообщение
 
 

так понятно

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList