числа в гриде

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

числа в гриде

Сообщение Tuco » 25.10.2004 (Пн) 11:43

Здравствуйте все!

У меня ксть база в аксессе. В колонка с ценами настроена как числа одинарной точности с тремя знаками после запятой. Когда я беру значения в MSHFlexGrid запросом, то из 1,23 получаю 1,2300001. Подскажите, пожалуйста, как бороться с этой напастью?

Спасибо.
"There's more than one way to do it!"

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

Сообщение Ennor » 25.10.2004 (Пн) 11:48

Хм... Напрямую привязываешь флекс к рекордсету? Тогда боюсь, никак. Если только не подредактировать запрос, чтобы это поле тянулось в виде, скажем:
...,
CAST(FieldX as numeric(20,3)) as [FieldX],
...
Ну или какой там оператор приведения в Аксессе...

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 25.10.2004 (Пн) 12:40

Я имел в виду, что тяну данные в грид с помощью ADODC.
Запрос имеет такой вид: "select * from [tablename]". Куда и как впихнуть "CAST(FieldX as numeric(20,3)) as [FieldX]"? Уж до конца, если не трудно, объясните, пожалуйста...
"There's more than one way to do it!"

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.10.2004 (Пн) 12:48

Наподобии
select cast(sum as Numeric(20,3) As Field from [tablename]

Только в Access помоему нет операторов приведения. Можешь попытаться использовать Round для округления. Если числа нужны только для просмотра, то можно использовать Format$(), только учитывай, что результатом Format$() является строка.
Lasciate ogni speranza, voi ch'entrate.

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 25.10.2004 (Пн) 13:04

на запрос :"select tn, fvp, doza, cou, mak, cast(price as Numeric(20,3) As price), val, firm, areg, ereg, grp from [tablename]" Получил сообщение
[ADODC]: Unknown error. [ADO]
а потом ещё и такое
Run-time error '-2147467259 (80004005)': Method 'Refresh' of object 'IAdodc' faled

А чтобы применить Format$() нужно перебирать по одной ячейки грида?
"There's more than one way to do it!"

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.10.2004 (Пн) 13:07

Да нет, просто напиши так:
select tn, fvp, doza, cou, mak, Format$(price,"0.00") as price, val, firm, areg, ereg, grp from [tablename]
Lasciate ogni speranza, voi ch'entrate.

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 25.10.2004 (Пн) 13:20

с двойными кавычками говорит :
Compile error. Expected: end of statement
, а без кавычек
sintax error: missing operator

А если ему Round подсовывать?
"There's more than one way to do it!"

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.10.2004 (Пн) 13:51

Попробуй использовать не запятую, а точку с запятой в качестве разделителя.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 25.10.2004 (Пн) 14:12

У нормальных Grid-ов есть свойство Format для колонки.
Может, чтобы не мучиться и велосипед не изобретать стоит в их сторону посмотреть???

Те что с VB идут дюже урезаны в функциональности и неудобны.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 25.10.2004 (Пн) 14:14

select tn, fvp, doza, cou, mak, (Format$(price;0.00) as price), val, firm, areg, ereg, grp from selected
run-time error '-2147217900 (80040e14)' sintax error in query expression (Format$(price;0.00) as price)
"There's more than one way to do it!"

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 25.10.2004 (Пн) 15:42

select tn, fvp, doza, cou, mak, Format(price,'0.00') as price, val, firm, areg, ereg, grp from selected

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 26.10.2004 (Вт) 10:29

sintax error (missing operator) in query expression (Format(price,'0.00') as price)

Я пробовал форматировать строки в гриде,
Код: Выделить всё
    Dim lRow&
    With MSHFlexGrid1
    For lRow = 1 To .Rows - 1
        .Row = lRow
        .Col = 6
        .Text = Format$(.Text, "0.00")
    Next lRow
    End With


но не помогает.... :-(
Что делать?
"There's more than one way to do it!"

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.10.2004 (Вт) 10:37

Код: Выделить всё
SELECT format(price,'0.00') as MyPrice FROM table1


Все работает.

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 26.10.2004 (Вт) 11:57

Я понял, ему скобки не нравились!!! :-)
Спасибо большое.
"There's more than one way to do it!"


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

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

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

    TopList