在表中定义两个字段为:
TEngMon_Absence float DEFAULT 1 NOT NULL ,
TEngMon_NormalOT float DEFAULT 1 NOT NULL ,在SQL2K中查表看到是1.0Delphi中代码:
m_dfAbsenceDay := ADOQuery1.FieldByName('TEngMon_Absence').AsFloat;
m_dfNormalOT:= ADOQuery1.FieldByName('TEngMon_NormalOT' ).AsFloat;edAbsence.Text := FormatFloat('0.00', m_dfAbsenceDay);
edNormalOT.Text := FormatFloat('0.00', m_dfNormalOT);edAbsence.Text赋值时没问题,edNormalOT.Text赋值时出EConvertError异常:
''' is not a valid floating point value'我自己重写过FormatFloat,用Format,临时变量值正确,交给result就出错。
?????????
TEngMon_Absence float DEFAULT 1 NOT NULL ,
TEngMon_NormalOT float DEFAULT 1 NOT NULL ,在SQL2K中查表看到是1.0Delphi中代码:
m_dfAbsenceDay := ADOQuery1.FieldByName('TEngMon_Absence').AsFloat;
m_dfNormalOT:= ADOQuery1.FieldByName('TEngMon_NormalOT' ).AsFloat;edAbsence.Text := FormatFloat('0.00', m_dfAbsenceDay);
edNormalOT.Text := FormatFloat('0.00', m_dfNormalOT);edAbsence.Text赋值时没问题,edNormalOT.Text赋值时出EConvertError异常:
''' is not a valid floating point value'我自己重写过FormatFloat,用Format,临时变量值正确,交给result就出错。
?????????
var
TpmStr : String;
TmpFloat : Float;
...TmpStr := ADOQuery1.FieldByName('TEngMon_NormalOT' ).AsString;
TmpFloat := StrToFloat(TmpStr);
edAbsence.Text := ADOQuery1.FieldByName('TEngMon_Absence').AsString;
edNormalOT.Text := ADOQuery1.FieldByName('TEngMon_NormalOT' ).AsString;
没有问题的!
strTemp := ADOQuery1.FieldByName('TEngMon_Absence').AsString;
edAbsence.Text := strTemp;
m_dfAbsenceDay := StrToFloat(strTemp);ShowMessage(ADOQuery1.FieldByName('TEngMon_NormalOT' ).AsString)//显示结果为1;
strTemp := ADOQuery1.FieldByName('TEngMon_NormalOT' ).AsString;
edNormalOT.Text := strTemp; <------------这一行报错
m_dfNormalOT := StrToFloat(strTemp);我试的时候表中的定义用decimal(4,1)/numeric(4,1)/float都用过。都是同样的错。
我的代码:
Var
strTemp:String;
m_dfAbsenceDay:Double;
m_dfNormalOT:Double;
begin
ShowMessage(ADOQuery1.FieldByName('aa' ).AsString);
strTemp := ADOQuery1.FieldByName('aa').AsString;
Edit1.Text := strTemp;
m_dfAbsenceDay := StrToFloat(strTemp);
ShowMessage(ADOQuery1.FieldByName('f2' ).AsString);
strTemp := ADOQuery1.FieldByName('f2' ).AsString;
edit2.Text := strTemp;
m_dfNormalOT := StrToFloat(strTemp);
end;
aa,f2都是float字段类型的数据 我的没有问题的呀!再看看吧 希望我写的对于你有价值!
edNormalOnChange:
m_dfNormalOT := StrToFloat(edNormalOT.Text);我在所有控件的Text中加了一个初值,解决了。这么说Delphi中的OnChange是在另一个线程中处理的,没想到这一点。
所以我跟踪时到不了这里。多谢各位,再加100分。前面的100给zhyanger,另100大家分吧。
edNormalOT.Text := ADOQuery1.FieldByName('TEngMon_NormalOT' ).AsString;