![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка "Invalid floating point operation"
Mamochka © (2006-10-03 09:31:00)Здравствуйте! Помогите пожалуйста...
...
NNOPER:=FieldByName('NNOPER').AsInteger;
...
Именно в этой строчке возникает вот такая ошибка "Invalid floating point operation"
Что это и как с этим бороться?
Mamochka (2006-10-03 10:24:00) [21]
> clickmaker
:о)
есть готовая база MainSd.dbf в которой есть поле NNOPER
из файла берется номер операции вставляется в базу MainSd.dbf
почему не вставляется не знаю пишет ошибку.
Может кто-нибудь скажет что эта ошибка означает
потому, что поле NNOPER существует
pavel_guzhanov (2006-10-03 10:24:00) [22]
> Mamochka © (03.10.06 10:11) [16]
Ну и где это значение пишется в базу?
clickmaker (2006-10-03 10:19:00) [23]
> [16] Mamochka © (03.10.06 10:11)
не видно связи между приведенным кодом и FieldByname...
Mamochka (2006-10-03 10:11:00) [24]
> pavel_guzhanov
дае есть такой файлик nnoper.inc в котором есть номер операции
смотри процедуру...
Procedure GetNNOPER;
Var
hFile:Integer;
FullIniFileName:String;
CurrentNNOPER:Integer;
CurrentNNOPERStr:String;
Buff:Array[0..9] Of Byte;
N:Integer;
Begin {GetNNOPER}
FullIniFileName:=WorkPath+IniPath+IniFileName;
If Not FileExists(FullIniFileName) Then
Begin {If Not}
ShowMessage('Не могу найти файл'+FullIniFileName+'!');
Application.Terminate;
End; {If Not}
hFile:=-4;
While hFile < 4 Do
hFile:=FileOpen(FullIniFileName,fmOpenReadWrite);
FileRead(hFile,Buff,SizeOf(Buff));
For N:=9 DownTo 0 Do
CurrentNNOPERStr:=Char(Buff[N])+CurrentNNOPERStr;
CurrentNNOPER:=StrToInt(CurrentNNOPERStr);
NNOPER:=CurrentNNOPER;
Inc(CurrentNNOPER);
CurrentNNOPERStr:=IntToStr(CurrentNNOPER);
FillChar(Buff,SizeOf(Buff),#32);
For N:=9 DownTo SizeOf(Buff)-Length(CurrentNNOPERStr) Do
Buff[N]:=Ord(CurrentNNOPERStr[N]);
FileSeek(hFile,0,0);
FileWrite(hFile,Buff,SizeOf(Buff));
FileClose(hFile);
End;
Mamochka (2006-10-03 10:05:00) [25]
> novill
из Главной базы main.dbf читаю, в другую базу mainsd.dbf пишу :о)
pavel_guzhanov (2006-10-03 10:04:00) [26]
> то что номер берется из файлика это точно
Если судить по коду, приведенному в [8], ты его пытаешься получить из базы данных, из поля "NNOPER". Еще раз спрошу, ты уверен, что "из файлика" этот номер вставлен в базу?
Mamochka (2006-10-03 10:00:00) [27]
> pavel_guzhanov
то что номер берется из файлика это точно
novill (2006-10-03 09:59:00) [28]Так ты в базу пишешь или из базы читаешь?
С этим определись.
Если читаешь, то зачем Edit, если хочешь писать, почему читаешь?
pavel_guzhanov (2006-10-03 09:52:00) [29]
> Номер операции берется из файлика
Из файлика он вставляется в базу? Уверен? Проверь...
clickmaker (2006-10-03 09:51:00) [30]
> [8] Mamochka © (03.10.06 09:47)
якорный бабай...
я не просил код. Я спрашивал, какого типа у тебя DataSet, и посоветовал проверить, есть ли там это поле (в редакторе полей посмотри) и есть ли в нем значение. Другими средствами. Какими - зависит от того, что за базу ты юзаешь.
Это всё, кстати, надо было в самом начале описать. Правила хорошего тона
Mamochka (2006-10-03 09:49:00) [31]
> pavel_guzhanov
Номер операции берется из файлика
Mamochka (2006-10-03 09:47:00) [32]
> clickmaker
CountList.Clear;
tbMain.First;
For N:=0 To tbMain.RecordCount-1 Do
Begin {For N}
FillChar(CountItem,SizeOf(CountItem),#0);
With tbMain, CountItem Do
Begin {With tbMain}
Edit;
FieldValues['STATUS']:=1;
NNOPER:=FieldByName('NNOPER').AsInteger;
TASK:=FieldByName('TASK').AsString;
DATAOPER:=FieldByName('DATAOPER').AsDateTime;
NNDOC:=FieldByName('NNDOC').AsString;
DT_SCHET:=FieldByName('DT_SCHET').AsString;
DT_CODE:=FieldByName('DT_CODE').AsString;
KT_SCHET:=FieldByName('KT_SCHET').AsString;
KT_CODE:=FieldByName('KT_CODE').AsString;
SUMMA:=FieldByName('SUMMA').AsFloat;
End; {With tbMain}
novill (2006-10-03 09:46:00) [33]Услуги телепатов дорого тебе обойдутся :)
Потому либо давай код, либо трассировщик в руки...
pavel_guzhanov (2006-10-03 09:45:00) [34]Насколько я понял, у тебя в базе номер операции должен присваиваться автоматически. Скорее всего он не присваивается. и ты пытаешься считать значение поля, равное null, но считать его как Integer. Null не может перевестись в Integer. Хотя, про автоматическое присвоение-это я наверное напрасно... автоматически, или его присваивает твоя программа - это без разницы. Все равно вероятнее всего, он не присвоен
clickmaker (2006-10-03 09:44:00) [35]
> [4] Mamochka © (03.10.06 09:39)
что за набор данных-то? Query, Table...? Есть там это поле вообще?
Mamochka (2006-10-03 09:39:00) [36]
> novill
Пробовал, дело втом что там должен быть номер операции, но он не присваивается сразу вылетает ошибка
novill (2006-10-03 09:37:00) [37]Посмотреть что находится в поле пробовал?
типа
showmessage(FieldByName('NNOPER'). asstring)
Mamochka (2006-10-03 09:36:00) [38]
> clickmaker
NNOPER имеет тип Integer
clickmaker (2006-10-03 09:35:00) [39]а какой тип у поля NNOPER? и есть ли оно в DataSet, чей FieldByName?