![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Invalid Floating Point [D7]
ViktorZ © (2006-02-26 15:06:00)Вылетает ошибка у пользователя. У меня главное все нормально. Компилирую прогу отправляю. у него еррор. Главное я даже понять не могу где. Использую Квик репорт.
ViktorZ (2006-02-27 14:34:00) [1]РАзделителт дат у нас совпадают и чмсел кстати тоже. Выяснилось все так: у юзверя при смене таблиц БД, все заработало. Скорее всего с датой что нить в самой базе было.
Neo Trinitron (2006-02-27 13:07:00) [2]Если подобные вещи (у меня работает, а на другой машине нет), то целесобразно посмотреть на настройки другой машины. Обратить внимание на разделители дат, целой и дробной части.
Sergey Masloff (2006-02-26 22:51:00) [3]Zacho © (26.02.06 22:22) [19]
Пропустил. Парадокс.
Zacho (2006-02-26 22:22:00) [4]Я что-то пропустил, или автор ветки так и не назвал СУБД ?
Petr V. Abramov (2006-02-26 21:54:00) [5]В свое время (98г) связка BDE+QR+SQLLinkдрайвер Oracle стабильно выдавала такую ошибку на процессоре Cyrix. Были такие приколы на мат. платах с каким-то вполне определенным чипсетом.
Но скорее дело в чем-нить типа разделителей
Johnmen (2006-02-26 20:55:00) [6]Ошибка звучит так Invalid Floating Point Operation
Осталось выяснить, на какой строчке кода.
Sergey Masloff (2006-02-26 20:49:00) [7]Все же на 90% дело в настройках - какие-то разделители у пользователя не те. Нельзя закладываться не на какие пользовательские настройки - за все что программа ожидает получить как внешние данные отвечает программист.
Джо (2006-02-26 19:48:00) [8]А говорил, что ошибки в программе нет... Есть она, есть.
ViktorZ (2006-02-26 19:17:00) [9]Ой вроде птичку ставил. Парадокс. Короче ситуевина такая. Берет пользователь чистую базу. Прога не выдает ошибки, но отрабатывает и ничего не выводит. Когда база заполнена чем то, то ошибка есть.
Vlad (2006-02-26 19:13:00) [10]
> ViktorZ © (26.02.06 19:03) [12]
Ну, тогда для начала все-таки необходимо установить - кто дает ошибку: клиент или сервер БД.
Кстати, какую БД используешь?
ViktorZ (2006-02-26 19:03:00) [11]я не знаю. У меня Прфайлера нет. А отладчике не шарю.
Vlad (2006-02-26 19:02:00) [12]
> ViktorZ © (26.02.06 18:59) [10]
> Дело как выясняется в базе.
Т.е. ошибку дает сервер БД?
Уж не на это ли ругается:
SUM(AR.qnt*Ar.RealPrice)
ViktorZ (2006-02-26 18:59:00) [13]Дело как выясняется в базе.
ViktorZ (2006-02-26 18:31:00) [14]Я то как раз то там и ожидаю и у меня работает. Пользователь все правильно делает. Я на форме подписал уже заранее в поля тестовые:15,01.01.2006,24.02.2006 соответсвенно. Другое дело что разделители могут быть разные. Но проверив, понял что нет.
Desdechado (2006-02-26 18:15:00) [15]> Query1.Params[0].AsInteger :=strtoint(Edit3.text);
> Query1.Params[1].AsDate:= strtodate(Edit1.text);
> Query1.Params[2] .AsDAte :=strtodate(Edit2.text);
а если в Edit не то, что ты ожидаешь?
пользователь-то может и промахнуться или даже не правильно понять, что туда вводить
и формат ввода тоже важен
ViktorZ (2006-02-26 17:57:00) [16]Как можно дать тебе вразумительный ответ на вопрос "как исправить", не видя кода твоей программы, не зная что она делает и в какой момент возникает ошибка?
Код очень громоздкий.
Но ошибка вылетает при нажатии на кнопку ее код и приведу.
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Text:='SELECT C.Card,SUM(AR.Qnt*AR.RealPrice) AS CAT FROM Cards C, Menu M '+
' LEFT OUTER JOIN ARCheck AR on AR.Sifr=M.Sifr '+
' LEFT OUTER JOIN ADCheck AD on AD.Sys_Num=AR.Sys_Num '+
' LEFT OUTER JOIN ACheck A on A.Sys_Num=AD.Sys_Num '+
' WHERE '+
' M.Categ=:P1 And '+
' (A.LogicDate BETWEEN :P2 AND :P3) AND '+
' (AD.CArdCod=C.Card) GROUP By C.CArd';
Query1.Params[0].AsInteger :=strtoint(Edit3.text);
Query1.Params[1].AsDate:= strtodate(Edit1.text);
Query1.Params[2] .AsDAte :=strtodate(Edit2.text);
Query1.Open ;
Query2.Close;
Query2.SQL.Text:='SELECT C.Card,SUM(AR.qnt*Ar.RealPrice) AS TOTAL FROM Cards C, Menu M '+
'LEFT OUTER JOIN ARCheck AR on AR.Sifr=M.Sifr '+
'LEFT OUTER JOIN ADCheck AD on AD.Sys_Num=AR.Sys_Num '+
'LEFT OUTER JOIN acheck A on A.Sys_Num=AD.Sys_Num '+
'WHERE '+
'M.CAteg<>:P1 And '+
'(A.LogicDate BETWEEN :P2 AND :P3)'+
'AND AD.CArdCod=C.Card GROUP By C.CArd';
Query2.Params[0].AsInteger :=strToInt(Edit3.text);
Query2.Params[1].AsDate:= strtodate(Edit1.text);
Query2.Params[2] .AsDAte :=strtodate(Edit2.text);
Query2.Open;
Query3.Close;
Query3.SQL.Text:='SELECT C.Card,SUM(AR.qnt*Ar.RealPrice) AS Del FROM Cards C, Menu_ M '+
'LEFT OUTER JOIN ARCheck AR on AR.Sifr=M.Sifr '+
'LEFT OUTER JOIN ADCheck AD on AD.Sys_Num=AR.Sys_Num '+
'LEFT OUTER JOIN acheck A on A.Sys_Num=AD.Sys_Num '+
'WHERE '+
'M.CAteg<>:P1 And '+
'(A.LogicDate BETWEEN :P2 AND :P3)'+
'AND AD.CArdCod=C.Card GROUP By C.CArd';
Query3.Params[0].AsInteger :=strToInt(Edit3.text);
Query3.Params[1].AsDate:= strtodate(Edit1.text);
Query3.Params[2] .AsDAte :=strtodate(Edit2.text);
Query3.Open;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Dbgrid1.DataSource := DataSource1;
Query1.DatabaseName :='SEN';
DAtasource1.DataSet :=Query1;
GridRep.Visible :=False ;
Session.AddPassword('Aeroflot_Plus');
Query1.Active:=true;
Query2.Active:=true;
Query3.Active:=true;
end;
НАсчет даты, даже и не думал. Спасибо буду рыть.
Vlad (2006-02-26 17:54:00) [17]
> ViktorZ © (26.02.06 17:41) [4]
> Из-за чего ошибка и как ее исправить
Ошибка, ясно дело, в твоей программе. Текст ошибки ясно об этом говорит.
Как можно дать тебе вразумительный ответ на вопрос "как исправить", не видя кода твоей программы, не зная что она делает и в какой момент возникает ошибка?
> Да у меня там только даты и целые числа и строки
а дата и есть число с плавающей запятой. См. справку TDateTime
ViktorZ (2006-02-26 17:48:00) [18]Invalid Floating Point - Не правильная операция с плавающей запятой. Да у меня там только даты и целые числа и строки.
ViktorZ (2006-02-26 17:41:00) [19]а по тексту ошибки догадаться не пробовал?
Как? если у меня ее нет. В инете по этому запросу такой лабуды начитался от команд неведомых, до того что эта проблема глюк.
>Компилирую прогу отправляю. у него еррор.
> Это плохо. Писать надо так чтобы работало везде.
Золотые слова. Жаль что только слова...
> Вопрос то в чем?
ИМХО я бы догадался. Из-за чего ошибка и как ее исправить. Потому что непонятно из-за чего она так как у меня все ОК. Мож какие нить библиотеки нужны, хотя Делфи все в себя шьет. Странно.
Desdechado (2006-02-26 16:56:00) [20]а по тексту ошибки догадаться не пробовал?