Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Возможно ли (D7, DBase) [D7, dBase, FoxPro]


paul_k ©   (2003-08-25 09:41:00) 

Не подскажут ли уважаемые, понимает ли 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
Как правильно написать это округление, или где об этом можно почитать?


paul_k   (2003-08-27 19:49:00) [1]

Проще новый софт написать ...
и сразу или на MsSql опереть, ну или на Acсess
С вопросом выкрутился, просто убедил что жили 2 года без отчета и еще проживут, пока новый софт написать не укажут....
а за подсказку c ADO - большое спасибо. буду пробовать


sniknik   (2003-08-26 20:28:00) [2]

> а вот никаких селектов? непонятно... или имелось в виду никаких case
именно, зарапортовался.

> Понял что придедся каждую запись обрабатывать. бедные юзверя.
ну зачем же так, не все так плохо кое какие возможности всетаки есть.

> Рад бы в рай, да заказчики не пускают
ну структуру и формат базы никто не заставляет менять а как у тебя там внутри не все ли равно?
к примеру перейдя на ADO - Jet - dBase уже больше возможностей. к примеру case (как в MSSQL) = iif(условие, если правда, если ложь) или наоборот (для более полного возможны вложения).


paul_k   (2003-08-26 19:26:00) [3]

Спасибо за полноценный и исчерпывающий ответ.
Понял что придедся каждую запись обрабатывать. бедные юзверя.


paul_k   (2003-08-25 11:59:00) [4]

>2 переходи на другой движок, начни с хелпа по нему.
Рад бы в рай, да заказчики не пускают
> никакиж декларирований никаких селектов
По поводу деклараций понятно что нет. Хотя не понятно почему этот запрос к Sybase нормально работает через BDE или там не Local SQL уже работает...
а вот никаких селектов? непонятно... или имелось в виду никаких case?


sniknik   (2003-08-25 11:44:00) [5]

> если обращатся с запросом, аналогичным тому, я выше написал, к 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:39:00) [6]

да и ещё в ту-же тему.
можно ли к DBAse (если можно то как) написать подобное

declare @id numeric
select @id=3

select
case @id
when 4 then @id*4
when 3 then @id*5
end


то есть как caseв селекте сделать


paul_k   (2003-08-25 11:19:00) [7]

Задача простая:
получить для дальнейших расчетов сумму округленных значений.
если обращатся с запросом, аналогичным тому, я выше написал, к SYBASE? ил и MsSql - все работает как надо. а вот как к DBase select писать - не понимаю


sniknik   (2003-08-25 11:05:00) [8]

DBase наверняка понимает, если ты о самом DBase а не о Local SQL в BDE.

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

> Как правильно написать это округление, или где об этом можно почитать?
книги, Local SQL Help (в дельфях).


Наверх

Титульная страница Поиск, карта сайта Написать письмо