我用locate语句, 
gridDataset.Locate('F_CODE',Queryt.fieldbyname(FKeyFieldName).Value ,[])
常常出现  "no Current record " 的BDEngine 报错.何解呢?

解决方案 »

  1.   

    gridDataset.Locate('F_CODE',varArrayof([Queryt.fieldbyname(FKeyFieldName).Value ]),[])
      

  2.   

    问题应该是出在queryt.fieldbyname(FKeyFieldName)上;
    楼主的queryt查询结果可能不唯一;而你又没有将他定位;所以肯定是没有当前记录了;^_^;
    no current record;^_^;
      

  3.   

    應該是queryt.fieldbyname(FKeyFieldName).value沒有值吧。
      

  4.   

    问题应该不是出在queryt.fieldbyname(FKeyFieldName)上,我先用一个变量赋值
      vl:=Queryt.fieldbyname(FKeyFieldName).Value 
    gridDataset.Locate('F_CODE',varArrayof([vl]),[])
     还是有事.
    如果我用 
      gridDataset.Locate(temkeyfield,Queryt.fieldbyname(FKeyFieldName).Value ,[loCaseInsensitive]);
    没有报错,但这样就算做了索引也比较慢.
      

  5.   

    要是是这样的话,检索不要用LOCATE,用Filter好了 模糊查询可以用 like '% %'和写SQL一样
      

  6.   

    你把你的Queryt.fieldbyname(FKeyFieldName).asstring付给变量来实现试试呢?
    看看什么提示呢?