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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> правильно написать формулу 
V
    Опции темы
disely
Дата 16.4.2009, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго всем здравия! помогите подскажите)
В запросе имеется поле Цена, Дата_покупки. Вобще нужно впихнуть формулу амортизации.
предположительно думаю нужно создать 2 поля: в одном считается Ам. отчисления в др. Ост. Стоимость.
Ам отчисления находится след образом: цена умножается на 0,15. Затем считается ост. стоимость, как "Цена-(цена*0,15)". И так до тех пор, пока поле с ост. стоимостью не будет <0.01. Это все для одной строчки, одного вида товара. Нужно подсчитать сумму Ам отчислений и сумму ост. стоимости. Пытаюсь сделать через построитель, имеются там функции и даже есть по амортизации. Но они не подходят. Возможно нужно как то впихнуть туда цикл, как это сделать?
PM MAIL   Вверх
Akina
Дата 17.4.2009, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(disely @  16.4.2009,  23:45 Найти цитируемый пост)
 нужно как то впихнуть туда цикл, как это сделать? 

Никак. Да это и не нужно.

Цитата(disely @  16.4.2009,  23:45 Найти цитируемый пост)
Ам отчисления находится след образом: цена умножается на 0,15. Затем считается ост. стоимость, как "Цена-(цена*0,15)". И так до тех пор, пока поле с ост. стоимостью не будет <0.01. Это все для одной строчки, одного вида товара.

Невнятно.


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

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


Новичок



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

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



в запросе создается еще поле, в котором нужно высчитать по каждому оборудованию амортиз. отчисления и еще поле с высчитанной ост стоимостью. В экселе было бы просто посчитать, а нужно организовать в аксесе.
Вобщем методика расчета:
есть цена например 3000
первое отчисление: 3000*0,15=450
ост. стоимость 3000-450=2550
второе отчисление 2550*0,15=382,5
ост стоимость 2550-382,5=2167,5
........................................................
послед ам. отчиселение при котором ост сумма <0.01 равно 0,001945588
само отчисление 0,011024998
затем суммируем все амортиз отчисления и выдаем последнюю ост стоимость(ее сумму не нужно)
Как образом впихнуть такой расчет в ЗАПРОС на выборку в аксес?

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


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


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

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



Код

Public Function LastSum(Sum As Double, Ost as Double) As Double
Do While Sum > Ost
  Sum=Sum*0.85
Loop
LastSum = Sum
End Function

Это - в отдельный модуль.
А в запросе соответственно
Код

select Цена
      ,ДатаПокупки
      ,LastSum([Цена], 0.01) As [ОстаточнаяЦена]
      ,[Цена]-LastSum([Цена], 0.01) As [АмортизационныеОтчисления]
from [table]

Если таблица находится в одной базе, а запрос выполняется другой (разделённые базы), модуль должен быть там где выполняется запрос.

Добавлено @ 09:36
PS. После сохранения модуля функция доступна в построителе запросов в секции "Пользовательские функции".

Добавлено через 9 минут и 6 секунд
PPS. Запрос будет ой какой неспешный...


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

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

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



Я бы добавил отдельную таблицу для хранения амартизационных отчислений. Их же потом показывать придется. Или вообще сразу расчитать их до 0-я при добавлении.
PM MAIL WWW ICQ Skype GTalk   Вверх
disely
Дата 17.4.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



bopoha спасибо за подсказку.
Akina достаточно умно предумано. А можно как-то привязать кол-во суммы амортизации к периоду?
например я расчитал разницу:
Код

 Period:DataDiff("m",[ДатаПокупки],Now())

Фактически получается, сумма амортизации состоит из кварталов (по 3 месяца).
пробовал так, вобще задумался аксес:
Код

Public Function LastSum(Sum As Double, kon As Double, Ost As Double) As Double
Ost=Sum
Sum=Ost*0.15
Ost=Ost-Sum
 Do While Ost > kon
   Sum=Sum*0.15
   Ost=Ost-Sum
Loop
LastSum = Sum
End Function

и возможно ли убрать из поля АмортизационныеОтчисления значок символ "р."

Это сообщение отредактировал(а) disely - 18.4.2009, 19:14
PM MAIL   Вверх
ТоляМБА
Дата 17.4.2009, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



Цитата(disely @  18.4.2009,  00:17 Найти цитируемый пост)
и возможно ли убрать из поля АмортизационныеОтчисления значок символ "р."

Если имеется ввиду поле на форме то Свойства -> вкладка Макет -> Формат поля -> "С разделителями разрядов".

Если поле в таблице то при типе данных "Денежный" вкладка Общие -> Формат поля -> "С разделителями разрядов".
PM   Вверх
disely
Дата 22.4.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



после небольших муччений я сделал правильно, а именно так:
в модуль пишем
Код

Public Function LastSum(Sum As Double, X As Double, Y As Double, Z As Double, Diapazon As Integer) As Double
If Diapazon Mod 3 = 0 Then
For i = 1 To Diapazon Step 3
Y = X * 0.15
Z = X - Y
X = Z
Sum = Sum + Y
Next i
LastSum = Sum
End If

If Diapazon Mod 3 = 2 Then
For i = 1 To Diapazon - 2 Step 3
Y = X * 0.15
Z = X - Y
X = Z
Sum = Sum + Y
Next i
Sum = Sum + 2 * Y / 3
LastSum = Sum
End If

If Diapazon Mod 3 = 1 Then
For i = 1 To Diapazon - 1 Step 3
Y = X * 0.15
Z = X - Y
X = Z
Sum = Sum + Y
Next i
Sum = Sum + Y / 3
LastSum = Sum
End If
End Function

в запросе:
Код

 LastSum(0,[Цена],1,0,Period) AS Амортизация,  [Котировка]-LastSum(0,[Цена],1,0,Period) As ОстатСтоимость

где период: 
Код

DateDiff("m",[Data_buy],Now()) AS Period

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

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

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

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


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

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


 




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


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

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