Не проходите мимо. Помогите. Застрял.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
sidor
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 29.07.2003 (Вт) 16:17

Не проходите мимо. Помогите. Застрял.

Сообщение sidor » 11.09.2003 (Чт) 11:19

Проблема при суммировании колонки базы данных FoxPro в VB6
В текстовом поле связанном с базой данных находится число например 151,01
Суммирует только целую часть тоесть число151 , а дробную часть теряет.
Как правильно это сделать.

:(
Dim snd As Single

snd = Val(Data1.Recordset.Fields("S_NAR"))

Переменная snd будет равна 151

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 11.09.2003 (Чт) 11:25

Val сканирует строку до первого символа НЕ ЦИФРЫ. Будь проще, используй CSng :)

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 11.09.2003 (Чт) 14:32

Возможно RayShade и прав, и функция Csng воспринимает символ "," как разделитель разрядов, но для Val, необходимо перекодировать символ в строке "," на "."

s=Data1.Recordset.Fields("S_NAR")
if instr(s,",")<>0 then
s1 = mid(s,1,instr(s,",")-1) +"." +mid(s,instr(s,",")+1)
else
s1 = s
end if
snd = Val(s1)

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 11.09.2003 (Чт) 14:49

Кхм.. Замена символа обычно вообще-то осущеcтвляется через

Код: Выделить всё
replace(s,",",".",,,vbtextcompare)




А насчет разделителя разрядов - воспринимается тот, что установлен в Control Panel\Regional Settings

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 11.09.2003 (Чт) 15:05

RayShade, спасибо за
Код: Выделить всё
replace(s,",",".",,,vbtextcompare)

:)

И все же, для Val плевать какой разделитель установлен в OS,
а в csgn не плевать?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 11.09.2003 (Чт) 15:49

Ну как сказать.. в принципе да :) потому что CSng просто выкинет все нецифры (в т.ч. и разделители, отличные от того, что установлен в системе) и в результате CSng("112,51") вернет просто число равное 11251 :)

sidor
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 29.07.2003 (Вт) 16:17

Сообщение sidor » 11.09.2003 (Чт) 16:56

Большое спасибо, что не оставили в беде.

Слегка помучившись я нашёл и своё решение.
Применил функцию CCur()

И всё получилось.


Ещё раз благодарю за помощь.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot] и гости: 14

    TopList  
cron