C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Тип вычисляемого поля
Magistr(ru)
Отправлено: 24.07.2003, 21:55


Ученик-кочегар

Группа: Участник
Сообщений: 20



Как задать тип вычисляемого поля Many(деньги) на SQL или чтобы цифра округлялась до двух знаков после запятой?
Nick
Отправлено: 25.07.2003, 05:04


Машинист паровоза

Группа: Участник
Сообщений: 247



Какая база. Если IBase — подскажу.
Young Coder
Отправлено: 25.07.2003, 22:55


Дежурный стрелочник

Группа: Участник
Сообщений: 34



QUOTE (Magistr(ru) @ 24/07/2003, 22:57)
Как задать тип вычисляемого поля Many(деньги) на SQL или чтобы цифра округлялась до двух знаков после запятой?

Однако, сэр.. Вы вопрос ставите — ничего не понятно, но могу сказать что Many — это много, а деньги этo money. Хотя можно и Many money. smile.gif

А если серьезно — задайте вопрос правильно, плиз.
Magistr(ru)
Отправлено: 29.07.2003, 05:07


Ученик-кочегар

Группа: Участник
Сообщений: 20



Как задать тип вычисляемого поля Money(деньги) на SQL или чтобы цифра округлялась до двух знаков после запятой?(Paradox)


Фрагмент кода: хочу округлить вычисляемое поле Сумма
Query1->SQL->Clear();
Query1->SQL->Add("select c.KNAME ,a.PP,b.DATNAK,NNAK,sum(CENA*KOL_NAKL) AS Сумма");
Query1->FieldByName(Сумма)->Precision=2;
Query1->SQL->Add("from NAK_SP03.db b , BNAKL.db a , M_SPARTN.db c");
Query1->SQL->Add("where a.NNAK=b.NNAK and a.DATNAK=b.DATNAK and a.PARTN=c.PARTN AND b.TDATA='02'");
Query1->SQL->Add("GROUP BY b.NNAK,b.DATNAK,a.PP,c.KNAME ");
Query1->SQL->Add("ORDER BY b.DATNAK");
Query1->Open();

Выдаёт ошибку типа: Precision не является типом Tfield…
[FONT=Geneva]
Nick
Отправлено: 31.07.2003, 05:24


Машинист паровоза

Группа: Участник
Сообщений: 247



QUOTE (Magistr(ru) @ 29/07/2003, 06:09)
Как задать тип вычисляемого поля Money(деньги) на SQL или чтобы цифра округлялась до двух знаков после запятой?(Paradox)


Фрагмент кода: хочу округлить вычисляемое поле Сумма
Query1->SQL->Clear();
Query1->SQL->Add("select c.KNAME ,a.PP,b.DATNAK,NNAK,sum(CENA*KOL_NAKL) AS Сумма");
Query1->FieldByName(Сумма)->Precision=2;
Query1->SQL->Add("from NAK_SP03.db b , BNAKL.db a , M_SPARTN.db c");
Query1->SQL->Add("where a.NNAK=b.NNAK and a.DATNAK=b.DATNAK and a.PARTN=c.PARTN AND b.TDATA='02'");
Query1->SQL->Add("GROUP BY b.NNAK,b.DATNAK,a.PP,c.KNAME ");
Query1->SQL->Add("ORDER BY b.DATNAK");
Query1->Open();

Выдаёт ошибку типа: Precision не является типом Tfield…
[FONT=Geneva]

Наверно так:

Query1->SQL->Clear();
Query1->SQL->Add("select c.KNAME ,a.PP,b.DATNAK,NNAK,sum(CENA*KOL_NAKL) AS Сумма");
// Query1->FieldByName(Сумма)->Precision=2; // Запрос не полностью сформировант
Query1->SQL->Add("from NAK_SP03.db b , BNAKL.db a , M_SPARTN.db c");
Query1->SQL->Add("where a.NNAK=b.NNAK and a.DATNAK=b.DATNAK and a.PARTN=c.PARTN AND b.TDATA='02'");
Query1->SQL->Add("GROUP BY b.NNAK,b.DATNAK,a.PP,c.KNAME ");
Query1->SQL->Add("ORDER BY b.DATNAK");
Query1->FieldByName("Сумма")->Precision=2;
Query1->Open();

Magistr(ru)
Отправлено: 02.08.2003, 04:34


Ученик-кочегар

Группа: Участник
Сообщений: 20



Все равно выдаёт ошибку.Пробовал
Query1->SQL->Add("select c.KNAME ,a.PP,b.DATNAK,NNAK,ROUND(sum(CENA*KOL_NAKL),2) AS- пишет "Copability not supported".
Может как-то по другому?
Admin
Отправлено: 02.08.2003, 15:08


Владимир

Группа: Администратор
Сообщений: 1190



Так вам надо, чтобы где было 2 цифры после запятой ?

Если при выводе данных — то округляйте до 2 цифр
выводимые данные, если перед помещением в базу — тоже,
если хотите чтобы в базе хранилось — ничего не получится,
в базе число хранится в своем формате.

Задаете формат поля MONEY (в PARADOX).

Если нужно, чтобы при выводе в DBGrid округлялось до двух
цифр после запятой, задайте у объекта этого поля
свойство currency в true
Magistr(ru)
Отправлено: 02.08.2003, 15:23


Ученик-кочегар

Группа: Участник
Сообщений: 20



Я не могу в Table зделать тип поля Money, т.к. это поле-вычисляемое поле и оно в Table не заносится
Admin
Отправлено: 03.08.2003, 22:00


Владимир

Группа: Администратор
Сообщений: 1190



Значит делаете его тип Currency,
вот и будет 2 цифры после запятой

Вернуться в Работа с базами данных в C++Builder