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

 
Поле типа Money и Ms SQL
don_Pedro
Отправлено: 01.03.2006, 21:55


Не зарегистрирован







Вот такая вот проблема возникла:
пишу на Билдере 6-м прогу, в которой имеется вот такой инсерт (бд — Ms SQL)
CODE

QryInsUsTotal->SQL->Text ="use baza; insert into accounts(pay_id, total_sum) values ('40', "+EdSumm->Text+")";
QryInsUsTotal->ExecSQL();
QryInsUsTotal->Close();
delete QryInsUsTotal;
QryInsUsTotal=NULL;

EdSumm->Text — это текст компонента TEdit
тип столбца total_sum — Money
Когда в EdSumm->Text стоит целое число, то никаких проблем нету, добавляется нормально, но когда ввожу число типа 100,50 то вылетает.
Кто-нить подскажет почему и как с этим бороться? т.е. Правильный пример этого куска кода smile.gif
Valdemar
Отправлено: 02.03.2006, 08:36


Мастер участка

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



Может в качестве разделителя надо использовать точку, а не запятую?
don_Pedro
Отправлено: 02.03.2006, 11:16


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

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



Собсно уже решил проблему smile.gif
Просто то значение, которое вводится в Едите EdSumm потом еще используется для других операций, поэтому там надо было использовать именно запятую. Просто перед тем, как передать значение EdSumm->Text в инсерт, заменяю запятую на точку, т.е.
CODE
AnsiString syma=EdSumm->Text;
syma.Insert(".",syma.AnsiPos(","));
syma.Delete(syma.AnsiPos(","),1);
QryInsUsTotal->SQL->Text ="use baza; insert into accounts(pay_id, total_sum) values ('40', "+syma+")";
QryInsUsTotal->ExecSQL();
QryInsUsTotal->Close();
delete QryInsUsTotal;
QryInsUsTotal=NULL;

cool.gif
Но сирано спасибо smile.gif
может кому-нить пригодится smile.gif
З.Ы. а я уже зарегился здеся smile.gif
AVC
Отправлено: 02.03.2006, 11:59


Ветеран

Группа: Модератор
Сообщений: 1583



Нормальное решение — использовать параметризованный запрос + вот совсем недавно было Access и вставка действительного числа ==Error

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