Пропадает разрядность в Recordset

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
sYstEmiZer
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 18.03.2004 (Чт) 13:06
Откуда: Москва

Пропадает разрядность в Recordset

Сообщение sYstEmiZer » 07.05.2004 (Пт) 10:20

Таинственным образом в Рекордсете пропадает запятая у дробных. Из базы (FB 1.5) стопудово вытаскивается с запятыми, а в рекордсет попадает без.

Причем 15,20 превращается в 1520.

Вызываю так:

OraDB.Open "Data Source=otchet", "admin", "pass"
OraCMD.ActiveConnection = OraDB
RecSet.ActiveConnection = OraDB

s="SELECT ..."
OraCMD.CommandText = s
RecSet.Open s, OraDB
Perem=RecSet.Fields(0)


Может кто-нибудь встречался?
С переподвыподвертом!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.05.2004 (Пт) 10:26

Круто. Похоже на несовпадение типов данных...
Будь добр, укажи сервер, технологию и create table хотя бы частично. А также версии первых двух.

sYstEmiZer
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 18.03.2004 (Чт) 13:06
Откуда: Москва

Привожу.

Сообщение sYstEmiZer » 07.05.2004 (Пт) 10:32

FireBird 1.5 Dialect 3
Текст запроса проверялся IB Expert-SQL Editor'oм - там все зашибись запятые есть

А что ты позразумеваешь под технологией?
С переподвыподвертом!

sYstEmiZer
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 18.03.2004 (Чт) 13:06
Откуда: Москва

Сам запрос приблизительно такой

Сообщение sYstEmiZer » 07.05.2004 (Пт) 10:37

SELECT a.pn,a.descr,a.quan,CAST(a.quan as NUMERIC(6,1))*b.weight
FROM Tabl1 a, Tabl2 b
WHERE a.pn=b.pn

тип a.quan - SmallInteger
тип b.weight - Numeric(6,1)
С переподвыподвертом!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.05.2004 (Пт) 10:40

Технология доступа какая? ADO, ODBC, Native, BDE - какая именно? От этого может многое зависеть, если у тебя именно в этом слое меняется тип данных - а он именно меняется, я так понимаю.

И еще: NUMERIC(6,1) - это действительно необходимо? Разве нельзя использовать что-нить более распространенное, например float или money?

sYstEmiZer
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 18.03.2004 (Чт) 13:06
Откуда: Москва

Сообщение sYstEmiZer » 07.05.2004 (Пт) 10:45

FireBird ODBC Driver v1.02.00.59
Последний раз редактировалось sYstEmiZer 07.05.2004 (Пт) 10:47, всего редактировалось 1 раз.
С переподвыподвертом!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.05.2004 (Пт) 10:47

ODBC можно много с чем использовать. Что у тебя, ADO?

sYstEmiZer
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 18.03.2004 (Чт) 13:06
Откуда: Москва

Сообщение sYstEmiZer » 07.05.2004 (Пт) 10:49

ADO v2.7
С переподвыподвертом!

sYstEmiZer
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 18.03.2004 (Чт) 13:06
Откуда: Москва

Сообщение sYstEmiZer » 07.05.2004 (Пт) 11:00

Поставил Float - вроде сработало. Видно с нумерик действительно не лучшый вариант делать.

А как для float поставить количество знаков после запятой? А то чего-то длинно получается.
С переподвыподвертом!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.05.2004 (Пт) 11:01

Значит, так. Чтобы не общаться в стиле аськи, давай остановимся вот на чем.
Если у тебя теряется знак в поле a.quan, то это пипец, по крайней мере я с таким не сталкивался. Похоже на косяк в драйвере.
Если же проблема в вычислимом поле, то думай, нахрен тебе такой изврат, как тот формат, на который я обратил внимание раньше. Не нравится он мне, не нравится. Особенно 1 знак после запятой - ну сделай хотя бы 3, раз это у тебя вес. Или внеси умножение внутрь каста - оно так вообще-то корректнее.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.05.2004 (Пт) 11:06

sYstEmiZer писал(а):...
А как для float поставить количество знаков после запятой? А то чего-то длинно получается.

Можно округлить на клиенте - Round() и много чего еще. А можно на сервере - не знаю, как в этом фениксе, но в MS SQL соотв. функции называются ROUND, FLOOR и CEILING. Поройся, наверняка есть.

sYstEmiZer
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 18.03.2004 (Чт) 13:06
Откуда: Москва

Сообщение sYstEmiZer » 07.05.2004 (Пт) 11:14

Спасибо тебе большое за помощь, Ennor !
Все понял, теперь все работает!!
С переподвыподвертом!


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList