powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запрос неправильно считает...
47 сообщений из 47, показаны все 2 страниц
запрос неправильно считает...
    #32938461
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mchild.bprice = 733.33
mchild.clearw = 49.85
Пишу в поле запроса (mchild.bprice*mchild.clearw) AS xxx
получается 36557,1238 - тоесть неправильно.
(если посчитать на калькуляторе-то 36556,5005)
Что за ерунда... уже все перепробовал...
Что самое интересное, что в окне Фокса и из программы непосредственно
если писать напрямую ?733.33*49.85=36556,5005 - тоесть правильно.
Люди помогите... ато с ума схожу....
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32938487
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А поля mchild.bprice и mchild.clearw какой точности?
И если из командного окна дать ?mchild.bprice * mchild.clearw, то что получается?
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32938520
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в базе не болтается третий знак после запятой? Может
mchild.bprice = 733.33
mchild.clearw = 49.85
это только округленные до второго знака цифири?
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32938551
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksMedА поля mchild.bprice и mchild.clearw какой точности?
И если из командного окна дать ?mchild.bprice * mchild.clearw, то что получается? делаю в окне Фокса:
SELECT mchild
GO 60 (это считается в строке под номером 60)
?mchild.bprice (результат=733,33)
?mchild.clearw (результат=49,85)
?mchild.bprice*mchild.clearw (результат=36557,1238)

поля mchild.bprice и mchild.clearw - тип double: with-8,decimal-2
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32938612
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В худшем случае может получиться и 36560.4164249999

Попробуй

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT mchild
GO  60  &&(это считается в строке под номером  60 )
?mchild.bprice &&(результат= 733 , 33 )
?mchild.clearw &&(результат= 49 , 85 )
?mchild.bprice*mchild.clearw &&(результат= 36557 , 1238 )
?str(mchild.bprice, 15 , 7 )
?str(mchild.clearw, 15 , 7 )
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32938716
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrriВ худшем случае может получиться и 36560.4164249999
Попробуй
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT mchild
GO  60  &&(это считается в строке под номером  60 )
?mchild.bprice &&(результат= 733 , 33 )
?mchild.clearw &&(результат= 49 , 85 )
?mchild.bprice*mchild.clearw &&(результат= 36557 , 1238 )
?str(mchild.bprice, 15 , 7 )
?str(mchild.clearw, 15 , 7 )
Ну и что:
?str(mchild.bprice,15,7) - результат 733,3300000
?str(mchild.clearw,15,7) - результат 49,8508500 (а почему не 49,8500000???)
И что мне делать дальше.....
Может какието настройки....
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32938744
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно если сделать так:
(ROUND(mchild.bprice,2)*ROUND(mchild.clearw,2)) AS xxx
то получается заветное 36556,5005
НО КАКОГО ФИГА... ЕСЛИ У МЕНЯ В ТАБЛИЦЕ В ПОЛЯХ И ТАК 2 ЦЫФРЫ
ПОСЛЕ ЗАПЯТОЙ... НЕ БОЛЬШЕ...
ЭТО МНЕ ЧТО ТЕПЕРЬ 20 ЗАПРОСОВ ПЕРЕПИСЫВАТЬ...
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32938816
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тип Double физически храниться не так как "обычные" данные. В твоем случае некорректны сами исходные данные.

?str(mchild.clearw,15,7) - результат 49,8508500

Вот это и причина. Физически храниться именно указанное значение, а отображается значение 49,85. Если ты перемножишь:

?733.33*49.85085

То и получишь "странное" значение 36557,1238

Т.е. необходимо скорректировать исходные данные . Ошибка именно в них, а вовсе не в каких-то настройках FoxPro.

Либо дай напрямую команду вроде:

Код: plaintext
1.
2.
SELECT mchild
REPLACE ALL mchild.bprice WITH ROUND(mchild.bprice, 2 ), ;
	mchild.clearw WITH ROUND(mchild.clearw, 2 )

Либо замени тип Double на тип Numeric(20,2)
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32938894
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМТип Double физически храниться не так как "обычные" данные. В твоем случае некорректны сами исходные данные.
?str(mchild.clearw,15,7) - результат 49,8508500
Вот это и причина. Физически храниться именно указанное значение, а отображается значение 49,85. Если ты перемножишь:
?733.33*49.85085
То и получишь "странное" значение 36557,1238
Т.е. необходимо скорректировать исходные данные . Ошибка именно в них, а вовсе не в каких-то настройках FoxPro.
Либо дай напрямую команду вроде:
Код: plaintext
1.
2.
SELECT mchild
REPLACE ALL mchild.bprice WITH ROUND(mchild.bprice, 2 ), ;
	mchild.clearw WITH ROUND(mchild.clearw, 2 )
Либо замени тип Double на тип Numeric(20,2)
Да, наверное так оно и есть... но немогу понять как оно туда попало вот такое вот значение... и самое главное... как избежать попадания таких чисел...
У меня данные в эти поля вводятся в грид.. (текстбокс в ячейке по умолчанию).
Тоесть может как то програмно задать для этих текстбоксов маску ввода 99.99 ??? Это поможет???Или как то эще можно сделать....???
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32938955
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно создать RULE (правило) на уровне записи.

Дело в том, что FORMAT (или InputMask) в TextBox и контролирует только процесс ввода через этот TextBox. При программной модификации он уже не при чем.

В принципе, можно, конечно, сделать и Format (InputMask) в свойствах таблицы. Но эти настройки могут быть перекрыты настройками в объектах формы.

Т.е. по большому счету Format и InputMask - это рекомендательные свойства. Далеко не всегда обязательные к исполнению.

А вот RULE - ничем не перекроешь. Т.е. пишешь в нем что-то вроде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
FUNCTION MyRule
IF ROUND(bprice, 2 )<>bprice
	REPLACE bprice WITH ROUND(bprice, 2 )
ENDIF
IF ROUND(clearw, 2 )<>clearw 
	REPLACE clearw WITH ROUND(clearw, 2 )
ENDIF
ENDFUNC

Еще раз. Это RULE не уровня конкретного поля (там будет запрет на модификацию), а уровня записи.
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32938980
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо... Легче стало как-то на душе после понимания проблемы..
Теперь будем эту проблему исправлять...
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32939465
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще такой вопрос напрашивается:
а как не округлить, а отсечь все знаки в цифре начиная после третего знака после запятой.
Например нужно ввести число 55,33
Ошибочно будет введено 55,336000
ведь ROUND(55,336000,2) в этом случае вернет 55,34, а мне нужно 55,33
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32939514
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?55.336-MOD(55.336,0.01)
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32939521
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=int(a*100)/100 ????
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32939531
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Help FLOOR
Help CEILING
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32939585
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrriHelp FLOOR
Help CEILING

Они вертают ближайшие большие/меньшие целые числа.
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32939868
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksMed?55.336-MOD(55.336,0.01) СПАСИБО, ПОМОГЛО
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32940438
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksMed UrriHelp FLOOR
Help CEILING

Они вертают ближайшие большие/меньшие целые числа.
А совместить с тем, что leaf чуть раньше написал? ;-)))

Код: plaintext
=floor(x* 100 )/ 100 
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32940469
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Urri AleksMed UrriHelp FLOOR
Help CEILING

Они вертают ближайшие большие/меньшие целые числа.
А совместить с тем, что leaf чуть раньше написал? ;-)))

Код: plaintext
=floor(x* 100 )/ 100 


Ему нужно отсечь, а если после запятой третий знак будет > 4, то получишь не то что хотел. Тогда уж лучше как доктор ( leaf ) прописал.
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32940474
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном случае эти функции равнозначны ;-)
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32940488
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrriВ данном случае эти функции равнозначны ;-)
Прав.
А это я себе: "Перед ответом посмотри Help"
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32940523
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STORE 10.9 TO gnNumber1
STORE -10.1 TO gnNumber2

? FLOOR(gnNumber1) && Displays 10
? FLOOR(gnNumber2) && Displays -11

? int(gnNumber1) && Displays 10
? int(gnNumber2) && Displays -10
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32940546
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STORE -10.111 TO gnNumber2
?gnNumber2%0.01 &&returns 0.009
?gnNumber2-gnNumber2%0.01 && returns -10.120
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32940561
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда уж лучше как доктор (leaf) прописал.

2алекс
за доктора спасибо хотя мне еще до МНС расти и расти
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32940585
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leaf Тогда уж лучше как доктор (leaf) прописал.

2алекс
за доктора спасибо хотя мне еще до МНС расти и расти

Пожалуйста :) Было бы желание.

С INT мне тоже больше нравится. Она более понятна и не выполняет лишних действий.

И опять себе: "Прежде чем согласиться проверь на всем диапазоне чисел, а не только на положительных"
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32940612
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, help123 с моим вариантом согласился, а ведь он то же на отрицательных числах ведет себя не правильно.
Так что leaf рулит.
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32941469
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И то верно ;-)
Это моя практика виновата: ну не бывает у меня отрицательных чисел в повседневной работе. ;-) Кстати, я пользуюсь по-старинке типом numeric. ;-)))
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32941691
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksMedКстати, help123 с моим вариантом согласился, а ведь он то же на отрицательных числах ведет себя не правильно.
Так что leaf рулит. Да действительно - ошибочка вышла
Написал функцию:
Код: plaintext
1.
2.
3.
4.
5.
FUNCTION myINT
  LPARAMETERS myvar
  PRIVATE retvar AS Double
  retvar=ROUND(INT(myvar* 100 )/ 100 , 2 )
  RETURN retvar
ENDFUNC
А потом делаю Rule's для записей в таблицах:
Код: plaintext
1.
2.
3.
FUNCTION ruleMparent
IF myINT(mparent.tariff)!=mparent.tariff
	REPLACE mparent.tariff WITH myINT(mparent.tariff)
ENDIF
Всем спасибо... ато пролетел бы еще и второй раз ...
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32941751
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
retvar=ROUND(INT(myvar* 100 )/ 100 , 2 )
А чем обусловлено применение ROUND? Неужели при DOUBLE появляется мусор при делении?
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32942170
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksMed
Код: plaintext
retvar=ROUND(INT(myvar* 100 )/ 100 , 2 )
А чем обусловлено применение ROUND? Неужели при DOUBLE появляется мусор при делении? Да мусор там уже никак не может появится.
А написал потому что без Round число имеет формат ХХ.ХХ00 вместо ХХ.ХХ,-тоесть лишних два нуля откуда-то берутся. А у меня формат поля в таблице с двума нулями, а не с четырмя
Просто перестраховался
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32942206
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help123Просто перестраховался
Лучше перебдеть, чем недобдеть!
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32942567
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi help123!

> А написал потому что без Round число имеет формат ХХ.ХХ00 вместо
> ХХ.ХХ,-тоесть лишних два нуля откуда-то берутся. А у меня формат поля в
> таблице с двума нулями, а не с четырмя

Это не имеет значения - просто фокс наряду с собственно числом внутри себя
(в памяти) хранит ещё и "формат отображения" - от того и бывает иногда что ?
ln1 показывает 12 а ? ln1*100 показывает например 1234 :)
Однако в собственно таблице формат НЕ сохраняется - он автоматом
"вынимается" из залоговка таблицы - как раз для Float (2) это и привело к
описанной проблеме - мы "не видим" часть числа, т.к. применённый к нему
формат отображения отрезал это :)

P.S. Ещё сложнее дело обстоит при математических вычислениях - дело в том,
что помимо вычисления собственно чисел, ещё проводятся и кой какие
вычисления с этими форматами - от того в частности и получается что
INT(myvar*100)/100 даёт 4 знака при отображении (хотя 2 младших всегда 0) :)
Для прикола ещё такой код можно проверить: ? (INT(0.12*100)+0.000000)/100 -
как говорится результат на лице :)

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32942644
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
? (INT(0.12*100)+0.000000)/100 -
как говорится результат на лице :)


у меня получилось 0.120000
а что еще должно быть?
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32942759
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksMedЛучше перебдеть, чем недобдеть! Это точно
Igor KorolyovОднако в собственно таблице формат НЕ сохраняется - он автоматом "вынимается" из залоговка таблицы - как раз для Float (2) это и привело к описанной проблеме - мы "не видим" часть числа, т.к. применённый к нему формат отображения отрезал это :)Да... чесно говоря неожидал я вот такой вот подлости от Фокса... Что-что.. а когда ты ему говоришь считать одно.. а он считает что-то другое... Короче: база уже написана... данные введены.. и тут по всем поставщикам правильно считает... а по одному 6 гривен не идет и данные то все правильные... я чуть не припух вычисляя почему так...
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32943012
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help123Да... чесно говоря неожидал я вот такой вот подлости от Фокса... Что-что.. а когда ты ему говоришь считать одно.. а он считает что-то другое... Короче: база уже написана... данные введены.. и тут по всем поставщикам правильно считает... а по одному 6 гривен не идет и данные то все правильные... я чуть не припух вычисляя почему так...
А потому что не надо было экспериментировать с типами данных! На... (в смысле, "зачем") ты использовал тип Double? Экономии захотелось? Ну, так надо точно знать, к чему это может привести. Точнее, как физически храняться такие типы данных и какие особенности по их использованию.

Если бы использовал старые типы Numeric или Float такой проблемы в принципе не возникло бы! Хотя, конечно, они физически больше места занимают.

Странно, что для хранения денежных сумм ты использовал Double, а не Currency. Хотя с Currency еще больше проблем.
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32943186
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМА потому что не надо было экспериментировать с типами данных! На... (в смысле, "зачем") ты использовал тип Double? Экономии захотелось? Ну, так надо точно знать, к чему это может привести. А я и незнал к чему это может привести...
ВладимирМТочнее, как физически храняться такие типы данных и какие особенности по их использованию. Тоже ничего незнаю о этих особенностях...
ВладимирМ Если бы использовал старые типы Numeric или Float такой проблемы в принципе не возникло бы! Хотя, конечно, они физически больше места занимают. Убедили, все данные Double перевел в Numeric(20,2). Вроди ничего не изменилось...
ВладимирМСтранно, что для хранения денежных сумм ты использовал Double, а не Currency. Хотя с Currency еще больше проблем. Вот-вот даже пробовать Currency не хочу. Денежные суммы у меня теперь тоже в Numeric(20,2)

А вот теперь такой офф-топик: у меня чего-то в репорте в ячейке данные начали выводится звездочками. В ячейке формат стоит: Numeric, 99 999. И вроди число из запроса туда подается округленное - Round(xxx.xxxx,0). Ростягивал ячейку на весь экран, убирал формат, что только не делал - все равно звездочки... Притом интересно то, что когда я беру репорт за предыдущий месяц... то данные выводятся... а за этот - звездочки... ЧТО ДЕЛАТЬ
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32943223
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help123А вот теперь такой офф-топик: у меня чего-то в репорте в ячейке данные начали выводится звездочками. В ячейке формат стоит: Numeric, 99 999. И вроди число из запроса туда подается округленное - Round(xxx.xxxx,0). Ростягивал ячейку на весь экран, убирал формат, что только не делал - все равно звездочки... Притом интересно то, что когда я беру репорт за предыдущий месяц... то данные выводятся... а за этот - звездочки... ЧТО ДЕЛАТЬ
Звездочки появляются, если целая часть числа не помещается в формат. Например, у тебя формат 999 999, а число, которое в этот формат надо запихнуть, - милиион и более.
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32943248
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или менее чем -100000 ;-)))
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32943261
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrriИли менее чем -100000 ;-))) Перевел поле в буквенный тип и написал - str(rs.recv1,60,2),- все равно звездочки.... а число там скорее всего подставляется 53...
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32943282
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help123А вот теперь такой офф-топик: у меня чего-то в репорте в ячейке данные начали выводится звездочками. В ячейке формат стоит: Numeric, 99 999. И вроди число из запроса туда подается округленное - Round(xxx.xxxx,0). Ростягивал ячейку на весь экран, убирал формат, что только не делал - все равно звездочки... Притом интересно то, что когда я беру репорт за предыдущий месяц... то данные выводятся... а за этот - звездочки... ЧТО ДЕЛАТЬ
Звездочки появляются в случае переполнения. А переполнение может быть:

1) В самих исходных данных! Т.е. в результате конвертации типа данных из Double в Numeric где-то произошло переполнение типа Numeric! Сделай поиск по таблице таких записей

Код: plaintext
1.
select mparent
LOCATE FOR NOT BETWEEN(tariff, 1 - 10 ** 19 , 10 ** 20 - 1 )

2) Значение поля больше чем указанный формат. Т.е. в твоем случае ты предпологаешь, что значение поля не превышет 100 тысяч (5 цифр)

3) Объект печати меньше по ширине, чем само значение.

Последние 2 пункта ты уже проверил. Значит, остается только ошибка самих исходных данных.
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32943785
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка была в самом запросе... в использовании функции NVL():
NVL(mparent.tariff,0)
заменил на:
NVL(mparent.tariff,0.00)
и все заработало... забыл что у меня два знака после запятой.
Хотя такой прикол с NVL - меня удивил... и почему так - я так и не понял...
Вычислил чисто методом научного втыка...
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32943804
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help123Ошибка была в самом запросе... в использовании функции NVL():
NVL(mparent.tariff,0)
заменил на:
NVL(mparent.tariff,0.00)
и все заработало... забыл что у меня два знака после запятой.
Хотя такой прикол с NVL - меня удивил... и почему так - я так и не понял...
Вычислил чисто методом научного втыка...

Так у тебя при 0.00 должны и перед запятой знаки теряться.
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32943829
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksMedТак у тебя при 0.00 должны и перед запятой знаки теряться. А почему??? Вы имеете ввиду что нужно писать 00000000.00
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32943857
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help123 AleksMedТак у тебя при 0.00 должны и перед запятой знаки теряться. А почему??? Вы имеете ввиду что нужно писать 00000000.00

Ага. А что бы не заморачиваться сколько нулей до, а сколько после запятой ставить пишу NVL(<FldName1>,<FldName2>-<FldName2>), где <FldName2> - поле подходящее по формату для <FldName1> и точно не содержащее NULL при выборке.
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32945090
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi help123!

А как ты думаешь фокс догадаеться какого размера поле сделать???
Хорошо в VFP9 добавили CAST, а до того именно через "шаблонные" 000.000 и
приходилось работать...
P.S. Он бы правильно догадался, если бы NULL-ов не было - а так видимо
первой записью он NULL встретил, посмотрел что тогда поле содержит 0 и
сделал поле типа N(1) - вот прочие записи и не влезли :)

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32945289
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyovа так видимо первой записью он NULL встретил, посмотрел что тогда поле содержит 0 и сделал поле типа N(1) - вот прочие записи и не влезли :) Я СНИМАЮ ПЕРЕД ВАМИ ШЛЯПУ... ИМЕННО В ПЕРВОЙ ЗАПИСИ ОН NULL И ВСТРЕТИЛ...
...
Рейтинг: 0 / 0
запрос неправильно считает...
    #32948846
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi help123!

Вообще-то предсказать какую именно запись фоксовый движок посчитает нужным
обрабатывать первой (точнее ПЕРЕД первой, на этапе определения структуры
будущего курсора) весьма сложно - он всё-же не настолько прямолинеен, чтобы
всегда брать первую физически запись, хотя зачастую это так и есть.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запрос неправильно считает...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]