请大家帮忙看看菜鸟问题
if (Adoquery1.fieldbyname('费用A').AsFloat + Adoquery1.fieldbyname('费用B').AsFloat>=100) and (Adoquery1.fieldbyname('说明').AsString='' or Adoquery1.fieldbyname('说明').AsString=nil) then
...运行出错:operator not applicable to this operand type
请问这是为什么?是Adoquery1.fieldbyname('说明').AsString=nil写错了吗?另外想问一下,欲判断“说明”字段中没有内容,应该用“是否为空”和“是否为null”来一起判断才不会漏数据吧
Adoquery1.fieldbyname('说明').AsString='' or Adoquery1.fieldbyname('说明').AsString=nil
if (Adoquery1.fieldbyname('费用A').AsFloat + Adoquery1.fieldbyname('费用B').AsFloat>=100) and (Adoquery1.fieldbyname('说明').AsString='' or Adoquery1.fieldbyname('说明').AsString=nil) then
...运行出错:operator not applicable to this operand type
请问这是为什么?是Adoquery1.fieldbyname('说明').AsString=nil写错了吗?另外想问一下,欲判断“说明”字段中没有内容,应该用“是否为空”和“是否为null”来一起判断才不会漏数据吧
Adoquery1.fieldbyname('说明').AsString='' or Adoquery1.fieldbyname('说明').AsString=nil
Adoquery1.fieldbyname('说明').AsString='' or Adoquery1.fieldbyname('说明').isNull
你的Adoquery1.fieldbyname('说明').AsString=''就包含了字段为null的情况
这个解决了
一个字段在默认没有数据的时候,不是null值吗,说明=''和说明.isnull是两回事吧?
那Adoquery1.fieldbyname('说明').AsString=''也肯定成立
所以你用个or是浪费
使用.isNUll
不一样,''是一个空字符串null是什么都没有Adoquery1.fieldbyname('说明').isNull的时候Adoquery1.fieldbyname('说明').AsString的值为'',但是这个是ADO隐形转换后的结果,
同样
Adoquery1.fieldbyname('说明').isNull的时候Adoquery1.fieldbyname('说明').AsInteger=0
这个去掉就行了,为空的话会读出''的
''和null的问题搞清楚了。
请教jiap1723,能举个最简单典型的nil的例子吗?