![]() |
|
|
#1
|
|||
|
|||
|
Здравствуйте! Очень нужна помощь.
Нужно подсчитать сумму доходов за определенный период времени. Пытаюсь сделать ниже приведенным образом, но выдает ноль ) видимо, не без всяких оснований. Код:
try
DM.ADOQuery1.SQL.Clear;
DM.ADOQuery1.SQL.Add('SELECT SUM(summa) AS D FROM Dohod WHERE data BETWEEN :first_date AND :last_date');
DM.ADOQuery1.Parameters.ParamByName('first_date').Value := DateTimePicker1.Date;
DM.ADOQuery1.Parameters.ParamByName('last_date').Value := DateTimePicker2.Date;
DM.ADOQuery1.Active:=True;
except
on e:Exception do
end;Последний раз редактировалось Chinvad, 11.03.2013 в 14:07. |
|
#2
|
||||
|
||||
|
а без sum выборка какие-то данные возвращает?
|
| Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Chinvad (09.03.2013)
| ||
|
#3
|
|||
|
|||
|
Спасибо, что навели на верную мысль ) Обещаю впредь использовать тег code.
|
|
#4
|
||||
|
||||
|
Дак че там с выборкой то?
|
|
#5
|
|||
|
|||
|
Исправила проблему с DateTime в DateTimePicker и просто Date у меня в базе, но нет ) вопрос остается актуальным! Запрос работает в виде суммы без выборки:
Код:
try
DM.ADOQuery1.SQL.Clear;
DM.ADOQuery1.SQL.Add('SELECT SUM(summa) AS D FROM Dohod');
DM.ADOQuery1.Active:=True;
except
on e:Exception do
end;
Dohod:=DM.ADOQuery1.FieldByName('D').AsFloat;и так же работает в виде простой выборки из таблицы по датам: Код:
try
DM.ADOQuery1.SQL.Clear;
DM.ADOQuery1.SQL.Add('SELECT * FROM Dohod WHERE data BETWEEN :first_date AND :last_date');
DM.ADOQuery1.Parameters.ParamByName('first_date').Value := StrToDateTime(DateToStr(DateTimePicker1.Date));
DM.ADOQuery1.Parameters.ParamByName('last_date').Value := StrToDateTime(DateToStr(DateTimePicker2.Date));
DM.ADOQuery1.Active:=True;
except
on e:Exception do
end;Но! не работает в первоначальном виде. Ошибка? Как вообще с помощью запроса посчитать сумму за период времени? |
|
#6
|
||||
|
||||
|
Сделай из таблицы "Прибул" выборку, сдается мне там данных просто нет.
Условия вообще выкинь. |
|
#7
|
|||
|
|||
|
Данные есть. Сумму по всей таблице считает верно. Так же верно выводит поиск по датам. А сумму по датам не считает. Может, это вообще невозможно? Я в литературе пока не встречала запроса c функцией SUM с выборкой именно по датам.
|
|
#8
|
||||
|
||||
|
Ты хочешь просуммировать даты? Правильно понимаю?
|
|
#9
|
|||
|
|||
|
Мне нужно подсчитать доходы предприятия за определенный период времени. Есть таблица Dohod, в которой есть такие поля, как data и summa. Нужно, скажем, посчитать сумму доходов за период с 25.01.2013 по 26.02.2013.
|
|
#10
|
||||
|
||||
|
какой тип поля data?
|
|
#11
|
|||
|
|||
|
дата время. Но я записываю только дату в кратком формате (дд.мм.гггг). В запросе тоже проделываю с DateTimePicker такую штуку, чтобы получить только дату:
Код:
StrToDateTime(DateToStr(DateTimePicker1.Date)) |
|
#12
|
||||
|
||||
|
тогда так :
Код:
DM.ADOQuery1.Parameters.ParamByName('first_date').Value := StrToDateTime(DateToStr(DateTimePicker1.Date)+' 00:00:00');
DM.ADOQuery1.Parameters.ParamByName('last_date').Value := StrToDateTime(DateToStr(DateTimePicker2.Date)+' 23:59:59');Последний раз редактировалось movnet, 11.03.2013 в 15:58. |
|
#13
|
|||
|
|||
|
Все равно выдает ноль (
Я пробовала, тот же запрос, но без суммы правильно выводит все даты в заданном временном промежутке. Так же запрос работает корректно, если убрать условие с датами, тем самым требуя сумму по всем строкам таблицы. |
|
#14
|
||||
|
||||
|
база данных какая?
|
|
#15
|
|||
|
|||
|
MS Access 2007
|