ds.insert; ds.fieldbyname('nodenum').asinteger := a 。结果问题就出在ds.insert这句上,原来我没加数据的变换部分(一个函数calculate)时没有错误,加上了这个函数之后就不行了,如下:
calculate ds.insert; ds.fieldbyname('nodenum').asinteger := a 。
Without looking at your code I can tell you that you are getting this error because you are trying to put a string into a VARCHAR field that is too long. So, for example you are trying to put a 60 char string into a VARCHAR(50) field.Thanks your explanation. I it helped me solve the same error这是别人遇到这个问题时的答复,解决了这个问题,你看看是不是字段类型没有设置好,长度有冲突
不是字段类型造成的,昨天傍晚这个错误莫名奇妙的解决了,但我依然不清楚原因。我前面给出的代码概述是将calculate放到一个循环中,因为我有很多测量传感器,而这些传感器的通信和解析方式是一样的。原来大概是这样的: for i:=0 to NodeCount-1 do begin NodeNum:= i; calculate; ds.insert; ... end;后来我改成这样: for i:=0 to NodeCount-1 do begin NodeNum:=i; calculate; end; for i:=0 to NodeCount-1 do begin ds.insert; ... end;也就是说原来我对每一个传感器(节点)计算完了马上放到dataset中,这时就会出前述的错误。后来我改成先把所有的节点都计算完,然后再将所有节点数据存入dataset就没问题了。 关键就在ds.insert这句上面,实际上我的calculate根本不涉及到任何的数据库操作或者引用数据库对象,所以我真的看不出问题出在哪里
要不出现这个错误,set sql_mode='';
“要不出现这个错误,set sql_mode=''”这句话没理解,呵呵
ds.insert;
ds.fieldbyname('nodenum').asinteger := a
。结果问题就出在ds.insert这句上,原来我没加数据的变换部分(一个函数calculate)时没有错误,加上了这个函数之后就不行了,如下:
calculate
ds.insert;
ds.fieldbyname('nodenum').asinteger := a
。
for i:=0 to NodeCount-1 do
begin
NodeNum:= i;
calculate;
ds.insert;
...
end;后来我改成这样:
for i:=0 to NodeCount-1 do
begin
NodeNum:=i;
calculate;
end; for i:=0 to NodeCount-1 do
begin
ds.insert;
...
end;也就是说原来我对每一个传感器(节点)计算完了马上放到dataset中,这时就会出前述的错误。后来我改成先把所有的节点都计算完,然后再将所有节点数据存入dataset就没问题了。
关键就在ds.insert这句上面,实际上我的calculate根本不涉及到任何的数据库操作或者引用数据库对象,所以我真的看不出问题出在哪里