| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS Access > Работа с датами в Access (Плиииз!) |
| Автор: Dinchik 8.2.2006, 17:36 |
| Сортируем данные из БД по сроку действия. При этом, нужны сроки: 1 день от 2 до 7 дней от 7 до 14 дней от 15 до 1 месяц от 1 до 2 месяц 1 год 15 дней 1 год 6 месяцев В БД имеются поля (Остаток, Дата начала договора,Дата окончания договора,% ставка) Нужны след. поля: 1. Столбец "сумма остатков" - просуммированные остатки со сроком действия, например, на 1 день. 2. Столбцы "Средневзвешенный процент" и "Средневзвешенный срок" - значения ячеек столбцов вычисляются по формуле вычисления сред.взв. значений. В данной таблице, это умножение соответствующей ячейки столбца "Остаток" на соотв. ячейку столбца "Проценты" ((или на разницу "Дата окон." и "Дата нач.") и записываем все вычисления в столбец ср.взв. процент, находим сумму из столбца ср.взв. процент (или срок, в случае вычисления ср.взв. срока) делим на среднюю "остаток" что будет равно ср.взв.-ному процента или срока. Вот такие дела, не получается найти средневзвешенный срок, т.к. не могу просуммировать в программе например все дни между 2 и 7. ПОМОГИТЕ ПЛИЗ!!! |
| Автор: nworm 8.2.2006, 18:23 |
| Не понял. Можно пример с маленькой таблицей. Что дано (таблица), что должно получиться (таблица) и что не получается? |
| Автор: Akina 8.2.2006, 19:16 | ||||
Создай вспомогательную таблицу "интервал" типа
|
| Автор: Dinchik 10.2.2006, 20:39 |
| Привет Всем помогающим! В общем из таблицы нужно вывести таблицу вот...а не получается у меня найти средневзвешенный срок!Например, программа вытаскивает сумму остатков на срок от 2 до 7 дней, но не может найти срвзв срок, т.е. я не могу задать точные функции или формулу...в общем такую детализацию программа не расчитывает!!! Добавлено @ 20:47 WHERE (БД.Конец-БД.Начало) between Инт.Min AND Инт.Max Это тоже плохо помогает у меня в программе так и идет, она вытаскивает все остатки между этими сроками и суммирует как я и задаю. Но не могу также найти срвзв. срок. Т.е. соотв. ячейку остатков умножить на разницу сроков (БД.Конец-БД.Начало) соотв. ячеек в отд. столбце. После этого сумму нового столбца разделить на сумму столбца остатков! Может у Вас получится |
| Автор: Akina 10.2.2006, 23:39 |
| Dinchik Знаешь, если я буду сокращать код так же, как ты свой постинг - ты никогда и ничего не поймешь. Будь уж так любезен поправить. И еще - найди человека, который про твою задачу НИЧЕГО не знает. Прочти (или дай прочесть) ему то что ты написАл. И посмотри, поймет он или нет. Думаю что нет. То, что очевидно тебе, вовсе не очевидно остальным - постарайся найти слова и формулировки, которые понятны и не допускают двоякого толкования. Тогда станет возможным тебе помочь. PS. Я уже почти знаю как - но не уверен что правильно понял твои объяснения. Так что подожду... |
| Автор: Dinchik 11.2.2006, 22:49 |
| Privet Akina! В общем нужно найти "Средневзвешенный срок" - это находится следующим образом: умножаем все ячейки столбца "Остаток" на разницу столбцов "Дата нач и Дата окон." и получаем 3 столбец, потом сумму вычисленного столбца делим на сумму столбца "остаток" что будет равно ср.взв. сроку. Надеюсь, это понятно |
| Автор: nworm 11.2.2006, 22:59 |
| А можно всё-таки пример? |
| Автор: Akina 13.2.2006, 10:23 |
| Dinchik В таком случае сначала создай запрос, который выбирает все записи и все поля, и кроме того для каждой записи вычисляет дополнительные поля, т.е. интервал ( ДатаКон-ДатаНач ) и заготовку для расчета твоего средневзвешенного срока ( (ДатаКон-ДатаНач)*Остаток ). И именно его, а не исходную таблицу, используй для расчета. Когда поймешь как это работает, и отладишь - просто пересобери 2 запроса в один. |
| Автор: Dinchik 14.2.2006, 17:44 |
| Akina, а если сразу то могут быть ошибки в вычислениях? У меня сумма исходной таблицы и сумма вычисленной не сходятся, не могу найти ошибку. Наверное надо сначала разбить как ты говоришь...ммм.... спасибо за совет! |
| Автор: Dinchik 15.2.2006, 16:06 |
| 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; Правильно ли это?Помогите плииииз!!!! а то я с этой задачей спать перестану, когда же я его закончу????????????????????????? |
| Автор: Akina 15.2.2006, 17:35 |
| Dinchik Очень хочется обозвать нехорошим словом, означающим человека, не желающего думать. Посмотри ВНИМАТЕЛЬНО на пример вспомогательной таблицы, который я привел выше. ОЧЕНЬ ВНИМАТЕЛЬНО. И сравни с тем что ты натворил. Особенно в самом начале и в самом конце. |
| Автор: Dinchik 15.2.2006, 21:14 |
| Akina я ничего не поняла, причем здесь мин. и макс. в общем Вы можете объяснить так, чтобы я поняла?(это моя первая подобная программа) и как вообще будет правильно? отправляю Вам код в прикр. файле |
| Автор: Akina 16.2.2006, 00:18 |
| Ошибка номер раз - от 2 до 7. Иначе 1 день - попадает в 2 диапазона. Ошибка номер два - от 3656 до MaxInt (MaxLong). Иначе более 7310 дней - не учитывается. |
| Автор: Dinchik 16.2.2006, 09:53 |
| значит остальной правильно? попробую щас |
| Автор: Dinchik 16.2.2006, 20:14 |
| В общем все у меня было правильно кроме первого срока, т.е. в таблице были сроки меньше 1 дня. а самый последний срок поставила на максимум, но оттуда ничего не добавилось СПАСИБО за советы!!!!!!!!!!!!!! |