Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с датами в Access (Плиииз!), Вычисление полей по дате 
V
    Опции темы
Dinchik
Дата 8.2.2006, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 8.2.2006

Репутация: нет
Всего: нет



Сортируем данные из БД по сроку действия. При этом, нужны сроки:
1 день
от 2 до 7 дней
от 7 до 14 дней
от 15 до 1 месяц
от 1 до 2 месяц
1 год 15 дней
1 год 6 месяцев

В БД имеются поля (Остаток, Дата начала договора,Дата окончания договора,% ставка)

Нужны след. поля:
1. Столбец "сумма остатков" - просуммированные остатки со сроком действия, например, на 1 день.
2. Столбцы "Средневзвешенный процент" и "Средневзвешенный срок" - значения ячеек столбцов вычисляются по формуле вычисления сред.взв. значений. В данной таблице, это умножение соответствующей ячейки столбца "Остаток" на соотв. ячейку столбца "Проценты" ((или на разницу "Дата окон." и "Дата нач.") и записываем все вычисления в столбец ср.взв. процент, находим сумму из столбца ср.взв. процент (или срок, в случае вычисления ср.взв. срока) делим на среднюю "остаток" что будет равно ср.взв.-ному процента или срока.

Вот такие дела, не получается найти средневзвешенный срок, т.к. не могу просуммировать в программе например все дни между 2 и 7. ПОМОГИТЕ ПЛИЗ!!! smile (срочно!!!!!!!!!!!!!!!!!!!!!!!)
PM MAIL   Вверх
nworm
Дата 8.2.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: нет
Всего: 8



Не понял. smile

Можно пример с маленькой таблицей. Что дано (таблица), что должно получиться (таблица) и что не получается?
PM MAIL WWW   Вверх
Akina
Дата 8.2.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Создай вспомогательную таблицу "интервал" типа
Код
ID Min Max
 1  0   1
 2  2   7
 3  8  14
......
и делай что-то типа
Код
SELECT Sum(БД.остаток) As Sum_остаток, Инт.ID
FROM БД, Инт
WHERE (БД.Конец-БД.Начало) between Инт.Min AND Инт.Max
GROUP BY Инт.ID



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dinchik
Дата 10.2.2006, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 8.2.2006

Репутация: нет
Всего: нет



Привет Всем помогающим!
В общем из таблицы нужно вывести таблицу вот...а не получается у меня найти средневзвешенный срок!Например, программа вытаскивает сумму остатков на срок от 2 до 7 дней, но не может найти срвзв срок, т.е. я не могу задать точные функции или формулу...в общем такую детализацию программа не расчитывает!!!
Добавлено @ 20:47
WHERE (БД.Конец-БД.Начало) between Инт.Min AND Инт.Max
Это тоже плохо помогает
у меня в программе так и идет, она вытаскивает все остатки между этими сроками и суммирует как я и задаю. Но не могу также найти срвзв. срок. Т.е. соотв. ячейку остатков умножить на разницу сроков (БД.Конец-БД.Начало) соотв. ячеек в отд. столбце. После этого сумму нового столбца разделить на сумму столбца остатков!
Может у Вас получится smile
PM MAIL   Вверх
Akina
Дата 10.2.2006, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



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

И еще - найди человека, который про твою задачу НИЧЕГО не знает. Прочти (или дай прочесть) ему то что ты написАл. И посмотри, поймет он или нет. Думаю что нет. То, что очевидно тебе, вовсе не очевидно остальным - постарайся найти слова и формулировки, которые понятны и не допускают двоякого толкования. Тогда станет возможным тебе помочь.

PS. Я уже почти знаю как - но не уверен что правильно понял твои объяснения. Так что подожду...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dinchik
Дата 11.2.2006, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 8.2.2006

Репутация: нет
Всего: нет



Privet Akina!

В общем нужно найти "Средневзвешенный срок" - это находится следующим образом:
умножаем все ячейки столбца "Остаток" на разницу столбцов "Дата нач и Дата окон." и получаем 3 столбец, потом сумму вычисленного столбца делим на сумму столбца "остаток" что будет равно ср.взв. сроку.

Надеюсь, это понятно

PM MAIL   Вверх
nworm
Дата 11.2.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: нет
Всего: 8



А можно всё-таки пример?
PM MAIL WWW   Вверх
Akina
Дата 13.2.2006, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Dinchik
В таком случае сначала создай запрос, который выбирает все записи и все поля, и кроме того для каждой записи вычисляет дополнительные поля, т.е. интервал ( ДатаКон-ДатаНач ) и заготовку для расчета твоего средневзвешенного срока ( (ДатаКон-ДатаНач)*Остаток ). И именно его, а не исходную таблицу, используй для расчета.
Когда поймешь как это работает, и отладишь - просто пересобери 2 запроса в один.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dinchik
Дата 14.2.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 8.2.2006

Репутация: нет
Всего: нет



Akina,
а если сразу то могут быть ошибки в вычислениях?
У меня сумма исходной таблицы и сумма вычисленной не сходятся, не могу найти ошибку.
Наверное надо сначала разбить как ты говоришь...ммм....
спасибо за совет!
PM MAIL   Вверх
Akina
Дата 14.2.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Dinchik @ 14.2.2006, 18:44 Найти цитируемый пост)
а если сразу то могут быть ошибки в вычислениях?У меня сумма исходной таблицы и сумма вычисленной не сходятся, не могу найти ошибку.

чудес не бывает... выведи количество записей в каждом случае - для начала.

PS. Это вообще хорошая практика - на время отладки во все группирующие запросы дополнительно вводить подсчет Count... а по поводу вложенных запросов - посмотри принцип вот тут. Лучше изгадить пару листов, чем искать ошибку в каком-нить трехэтажном безобразии...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dinchik
Дата 15.2.2006, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 8.2.2006

Репутация: нет
Всего: нет



Akina
после применения вашего совета возникла еще одна проблема
в общем сумма остатков исходной таблицы и сумма остатков расчетной таблицы не сходятся
я думаю что ошибка отсюда:
'1 день' =1;
'7 дней' = between 1 and 7;
'14 дней' = between 8 and 14;
'1 месяц' = between 15 and 31;
'2 месяца' = between 32 and 61;
'3 месяца' = between 62 and 92;
'4 месяца' = between 93 and 122;
'5 месяцев' = between 123 and 154;
'6 месяцев' = between 155 and 183;
'7 месяцев' = between 184 and 214;
'8 месяцев' = between 215 and 244;
'9 месяцев' = between 245 and 275;
'10 месяцев' = between 276 and 305;
'11 месяцев' =between 306 and 335;
'1 год' = between 336 and 366;
'1 год 15 дней' = between 367 and 381;
'1 год 6 месяцев' = between 382 and 548;
'2 года' = between 549 and 733;
'3 года' = between 734 and 1096;
'4 года' = between 1097 and 1462;
'5 лет' = between 1463 and 1827;
'6 лет' = between 1828 and 2193;
'7 лет' = between 2194 and 2558;
'8 лет' = between 2559 and 2924;
'9 лет' = between 2925 and 3289;
'10 лет' = between 3290 and 3655;
'свыше 10 лет' = 3656 and 7310;
Правильно ли это?Помогите плииииз!!!! а то я с этой задачей спать перестану, когда же я его закончу????????????????????????? smile

PM MAIL   Вверх
Akina
Дата 15.2.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Dinchik
Очень хочется обозвать нехорошим словом, означающим человека, не желающего думать.

Посмотри ВНИМАТЕЛЬНО на пример вспомогательной таблицы, который я привел выше. ОЧЕНЬ ВНИМАТЕЛЬНО. И сравни с тем что ты натворил. Особенно в самом начале и в самом конце.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dinchik
Дата 15.2.2006, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 8.2.2006

Репутация: нет
Всего: нет



Akina
я ничего не поняла, причем здесь мин. и макс.
в общем Вы можете объяснить так, чтобы я поняла?(это моя первая подобная программа)
и как вообще будет правильно? отправляю Вам код в прикр. файле

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  kod_progr.txt 7,21 Kb
PM MAIL   Вверх
Akina
Дата 16.2.2006, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Dinchik @ 15.2.2006, 17:06 Найти цитируемый пост)
'7 дней' = between 1 and 7;

Ошибка номер раз - от 2 до 7. Иначе 1 день - попадает в 2 диапазона.

Цитата(Dinchik @ 15.2.2006, 17:06 Найти цитируемый пост)
'свыше 10 лет' = 3656 and 7310;

Ошибка номер два - от 3656 до MaxInt (MaxLong). Иначе более 7310 дней - не учитывается.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dinchik
Дата 16.2.2006, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 8.2.2006

Репутация: нет
Всего: нет



значит остальной правильно?
попробую щас
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0637 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.