Форум: "Базы";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
ВнизВозможно ли (D7, DBase) Найти похожие ветки
← →
paul_k (2003-08-25 09:41) [0]Не подскажут ли уважаемые, понимает ли DBase функцию round, и если понимает то как её правильно присенить.
есть код вида
q_tmp:=tQuery.Create(nil)
q_tmp.Database:="MyDb";
q_tmp.Sql.add("select sum(field1*field2) as sum_total from table");
q_tmp.open;
sum_total:=MyRound(q_tmp.FieldByName("sum_total").asfloat,2)
q_tmp.close
Есть ли способ (кроме перебора каждой записи по циклу) написать так
q_tmp:=tQuery.Create(nil)
q_tmp.Database:="MyDb";
q_tmp.Sql.add("select round(sum(round(field1,2)*round(field2,2)),2) as sum_total from table");
q_tmp.open;
sum_total:=MyRound(q_tmp.FieldByName("sum_total").asfloat,2)
q_tmp.close
Пробовал - передергиваю запрос - не работает. Ругается на ошибку в SQL
Как правильно написать это округление, или где об этом можно почитать?
← →
sniknik (2003-08-25 11:05) [1]DBase наверняка понимает, если ты о самом DBase а не о Local SQL в BDE.
> Есть ли способ (кроме перебора каждой записи по циклу) написать так
можно для округления CAST к целочисленному типу использовать (наверное), или сделать вычисляемое поле уже в дельфях независимо от запроса. а можно так (с дробями) оставить а по GetText выводить как нужно. можно в отчете округлять. все в зависимости от задачи.
> Как правильно написать это округление, или где об этом можно почитать?
книги, Local SQL Help (в дельфях).
← →
paul_k (2003-08-25 11:19) [2]Задача простая:
получить для дальнейших расчетов сумму округленных значений.
если обращатся с запросом, аналогичным тому, я выше написал, к SYBASE? ил и MsSql - все работает как надо. а вот как к DBase select писать - не понимаю
← →
paul_k (2003-08-25 11:39) [3]да и ещё в ту-же тему.
можно ли к DBAse (если можно то как) написать подобное
declare @id numeric
select @id=3
select
case @id
when 4 then @id*4
when 3 then @id*5
end
то есть какcase
в селекте сделать
← →
sniknik (2003-08-25 11:44) [4]> если обращатся с запросом, аналогичным тому, я выше написал, к SYBASE? ил и MsSql - все работает как надо.
синтаксис и возможности любого SQL сервера различаются. а уж сравнивать по возможностям с Local SQL ...
> а вот как к DBase select писать - не понимаю
1 используй то что есть, почитай хелп по Local SQL.
2 переходи на другой движок, начни с хелпа по нему.
> да и ещё в ту-же тему.
> можно ли к DBAse (если можно то как) написать подобное
в DBAse может быть и можно, в Local SQL нет. никакиж декларирований никаких селектов...
(ты же не используеш DBase ты используеш BDE и Local SQL с таблицами в формате DBase)
← →
paul_k (2003-08-25 11:59) [5]>2 переходи на другой движок, начни с хелпа по нему.
Рад бы в рай, да заказчики не пускают
> никакиж декларирований никаких селектов
По поводу деклараций понятно что нет. Хотя не понятно почему этот запрос к Sybase нормально работает через BDE или там не Local SQL уже работает...
а вот никаких селектов? непонятно... или имелось в виду никаких case?
← →
paul_k (2003-08-26 19:26) [6]Спасибо за полноценный и исчерпывающий ответ.
Понял что придедся каждую запись обрабатывать. бедные юзверя.
← →
sniknik (2003-08-26 20:28) [7]> а вот никаких селектов? непонятно... или имелось в виду никаких case
именно, зарапортовался.
> Понял что придедся каждую запись обрабатывать. бедные юзверя.
ну зачем же так, не все так плохо кое какие возможности всетаки есть.
> Рад бы в рай, да заказчики не пускают
ну структуру и формат базы никто не заставляет менять а как у тебя там внутри не все ли равно?
к примеру перейдя на ADO - Jet - dBase уже больше возможностей. к примеру case (как в MSSQL) = iif(условие, если правда, если ложь) или наоборот (для более полного возможны вложения).
← →
paul_k (2003-08-27 19:49) [8]Проще новый софт написать ...
и сразу или на MsSql опереть, ну или на Acсess
С вопросом выкрутился, просто убедил что жили 2 года без отчета и еще проживут, пока новый софт написать не укажут....
а за подсказку c ADO - большое спасибо. буду пробовать
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c