Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Вниз

Если в SQL функции типа FloatFormat?   Найти похожие ветки 

 
aw   (2002-04-17 18:42) [0]

Такая проблема: select field1/filed2 выводит значение типа 5.6666666... Как оставить только 2 знака после зпт?


 
Anatoly Podgoretsky   (2002-04-17 18:46) [1]

select никуда не выводит, поэтому там это не нужно


 
aw   (2002-04-17 18:55) [2]

Ситуация такова. Есть Query и DBGrid куда выводятся данные из этого запроса. Как тогда сделать чтобы в DBGrid всё выводилось OK. Ситуация усложняется тем что кол-во колонок заранее не известно.


 
Anatoly Podgoretsky   (2002-04-17 19:00) [3]

Сканируй FieldDef и устанавливай DisplayFormat 0.00


 
aw   (2002-04-17 19:04) [4]

я не использую FieldDef. колонки добавляю "alter table add"


 
sniknik   (2002-04-17 19:29) [5]

хочеш сказать так не получается?
ALTER TABLE Names ADD ChVozv NUMERIC(16,2)


 
Reindeer Moss Eater   (2002-04-17 19:39) [6]

перед открытием запроса получи метаданные в FieldDefs.
Пройди по нему и если поле ftFloat и иже с ним, то при создании TField"a установи DisplayFormat := "0.00"
Как тебе уже сказали (Anatoly Podgoretsky)


 
Anatoly Podgoretsky   (2002-04-17 19:40) [7]

Проблема не в этом, а какой тип поля будет использоваться, как я понимаю ftFloat?


 
Coty   (2002-04-17 21:33) [8]

Не знаю про все SQL-сервера, но в большинстве есть функция round

select round(field1/field2,2)...


 
coty   (2002-04-17 21:34) [9]

В большинстве SQL-серверов есть функция ROUND.
select round(field1/field2,2) ...


 
sniknik   (2002-04-17 23:39) [10]

в Pervasive есть приведение к формату SELECT FLOAT8/INT2 [ZZZZZZ.ZZ] FROM table1
ну и что? в Local SQL нет, а именно он используется в данном случае. Так? Если используется Jet для доступа то все меняется (функций больше).

а какая разница какого типа поле? ftFloat (есть деление точно будет ftFloat)или целое, отображатся все одно будет по заданному формату.


 
Anatoly Podgoretsky   (2002-04-18 00:03) [11]

Вот поэтому никакие round не помогут, так как Float, а не Fixed, DisplayFormat наоборот поможет рещить эту проблему


 
Ph.D.Kot   (2002-04-18 08:43) [12]

RE: Ситуация такова. Есть Query и DBGrid куда выводятся данные из этого запроса. Как тогда сделать чтобы в DBGrid всё выводилось OK. Ситуация усложняется тем что кол-во колонок заранее не известно.

устанавливаешь TDadaSource привязываешь его к совему квери параметром TDadaSource.DataSet:=ТвойQuery;
а TDBGrid привязываешь к TDadaSourse параметром TDBGrid.DataSource:=TDadaSource.... и потом становится абсолютно пофиг сколько у тебя колонок в в результате запроса, да и сколько на самом деле строк тоже ,-))


 
Johnmen   (2002-04-18 09:13) [13]

select ..., cast(100.0*field1/filed2 as integer) / 100.0 as myfield from ...

хотя я бы не только округлял, если надо, но и обязательно, как было сказано, DisplayFormat делал...


 
alexadvanser   (2002-04-18 10:06) [14]

Johnmen молодец...


 
aw   (2002-04-18 10:30) [15]

>перед открытием запроса получи метаданные в FieldDefs.
>Пройди по нему и если поле ftFloat и иже с ним, то при создании >TField"a установи DisplayFormat := "0.00"
>Как тебе уже сказали (Anatoly Podgoretsky)
Чего-то никак не получается так сделать. Объясните, пожалуйста, поподробнее. Как при создании TField"a установить DisplayFormat := "0.00"?


 
Reindeer Moss Eater   (2002-04-18 11:02) [16]

var aField:TField;
Query1:TQuery;
begin
Query1:=TQuery.Create(nil);
with Query1 do
begin
SQL.Text:="Select * from MyTableName";
FieldDefs.Update;
for i:=0 to Pred(FieldDefs.Count) do
begin
aField:=FieldDes[i].CreateField(Query1);
if aField.DataType = ftFloat then
TNumericField(aField).DisplayFormat:="0.00";
end;
end;


 
Anatoliy   (2002-04-18 14:18) [17]

В Sybase все просто:

select cast(field1/field2 as numeric(10,2)) as "My Field" from...
или
select cast(field1/field2 as decimal(10,2)) as "My Field" from...

а DisplayFormat - прямая зависимость от приложения!


 
Alexander Vasjuk   (2002-04-18 16:06) [18]

Anatoliy © (18.04.02 14:18)
> select cast(field1/field2 as numeric(10,2)) as "My Field" from...

100.001 например выведется как 100 а не как 100.00
Поэтому придется зависеть от приложения.
(Либо превращать число в текст, я бы сказал извращать)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.006 c
1-49937
ko@ndrew
2002-05-03 22:11
2002.05.16
DirectPlay8


3-49817
VAleksey
2002-04-18 09:24
2002.05.16
Database1.DataSets


1-50048
SuperLamer
2002-05-02 17:27
2002.05.16
Процедура SetLeght


14-50112
Уставший
2002-04-04 20:27
2002.05.16
Всё к чертям!


3-49843
kubik
2002-04-19 00:10
2002.05.16
хитрый SQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский