Ошибка в FastReport ТОРГ-12
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 589
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Воронеж ОАО Верофарм. Воронеж
Ошибка в FastReport ТОРГ-12
Здравствуйте! Пытаюсь печатать ТОРГ-12 (сбыт) в формате FastReport. Вылетает с ошибкой типа "Memo168: '2345.0000000000000000' is not a valid floating point value"
Что это такое? кто-то встречал? (перевод на русский мне понятен, а вот почему в стандартном отчете ошибка и в чем ее причина - нет)
Что это такое? кто-то встречал? (перевод на русский мне понятен, а вот почему в стандартном отчете ошибка и в чем ее причина - нет)
-
- Местный житель
- Сообщения: 222
- Зарегистрирован: 04 июн 2008, 14:35
- Откуда: Стерлитамак
- Контактная информация:
Разве сие удивительно в контексте Гали?
На счетах фактурах тоже самое было у нас. В этот мемо не такое уж важное поле у нас было, которое всегда практически пустым было. Мы просто мемо почистили. А так то есть подозрение, что в потоке вам вместо float подсунули string форматированный. Поиграйтесь с этим полем преобразуя встроенными функциями фаста.
На счетах фактурах тоже самое было у нас. В этот мемо не такое уж важное поле у нас было, которое всегда практически пустым было. Мы просто мемо почистили. А так то есть подозрение, что в потоке вам вместо float подсунули string форматированный. Поиграйтесь с этим полем преобразуя встроенными функциями фаста.
-
- Местный житель
- Сообщения: 589
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Воронеж ОАО Верофарм. Воронеж
К сожалению, поля важные - стоимость, общее количество по накладной, да и количество по позициям хотелось бы отформатировать. Там вроде получается OleStr объект, я пробовал преобразовать в String, а потом форматировать, но в String преобразуется (не ругается по крайней мере), а вот дальше - фиг вам, идет упомянутая выше ошибка (Пробовал StrToInt, StrToFloat - все ведет к ошибке!).
-
- Местный житель
- Сообщения: 222
- Зарегистрирован: 04 июн 2008, 14:35
- Откуда: Стерлитамак
- Контактная информация:
Вот так вроде можно извратиться:
было:
стало:
По сути меняем точку на запятую. Функции ReplaceStr не нашел.
было:
Код: Выделить всё
StrToFloat(<FR_DOCSPECIF."KOL_GRM_S">)
Код: Выделить всё
StrToFloat(
Copy(<FR_DOCSPECIF."KOL_GRM_S">,1,Pos('.',<FR_DOCSPECIF."KOL_GRM_S">)-1)+','+
Copy(<FR_DOCSPECIF."KOL_GRM_S">,Pos('.',<FR_DOCSPECIF."KOL_GRM_S">)+1,Length(<FR_DOCSPECIF."KOL_GRM_S">))
)
Добрый день! Извините за задержку ответа. Упустил ваше сообщение из виду.
Задачу перевода числа в произвольном строковом виде (с запятыми, с точками, с разделителями тысяч) в числовой формат можно решить примерно следующим образом. В отчет FastReport на закладку «код» поместить функцию:
В отчете ее можно использовать следующим образом
Пример отчета в файле: http://forum.galaktika.by/download/file ... 68dd2b7ca9
Задачу перевода числа в произвольном строковом виде (с запятыми, с точками, с разделителями тысяч) в числовой формат можно решить примерно следующим образом. В отчет FastReport на закладку «код» поместить функцию:
Код: Выделить всё
function myStrToExtended(s : string):extended;
var
i: Integer;
begin
Result := 0;
// удалить разделители тысяч - на всякий случай
while Pos(' ', s) <> 0 do
Delete(s, Pos(' ', s), 1);
try
// попробовать конвертацию для точки
for i := 1 to Length(s) do
if s[i] in [',', '.'] then
s[i] := '.';
Result := StrToFloat(s);
except
// если не получилось попробовать конвертацию для запятой
for i := 1 to Length(s) do
if s[i] in [',', '.'] then
s[i] := ',';
Result := StrToFloat(s);
end;
end;
В отчете ее можно использовать следующим образом
Код: Выделить всё
[myStrToExtended('12345.678')] и [myStrToExtended('12345,678')]
-
- Местный житель
- Сообщения: 222
- Зарегистрирован: 04 июн 2008, 14:35
- Откуда: Стерлитамак
- Контактная информация:
Только по большому счету все эти решения не более чем "костыли". Проблему лучше решать в корне: поток фаста должен отдавать данные в тех типах в которых они в базе. Преобразование числа в форматированную строку делают в отчетах ибо неизвестно какой формат мне может понадобиться.
Это в общем то касается всех всех всех отчетов. Не в первый раз наступаем на грабельки фисла форматированного в строку.
Это в общем то касается всех всех всех отчетов. Не в первый раз наступаем на грабельки фисла форматированного в строку.