问题描述
近日写一代理,里面需要用DB.SEARCH,写法如下:searchFormula$={zz="}+tName+{"&Form="frm_originality"&HasResult!="1"&del!="1"&@Created>=@TextToTime("}+Cstr(doc.startdate(0))+{")&@Created<=@TextToTime("}+Cstr(doc.enddate(0))+{")}前面这几项都没问题zz="}+tName+{"&Form="frm_originality"&HasResult!="1"&del!="1"doc.startdate(0)和doc.enddate(0)是两个时间,需要找出的文档就是创建时间在这两个时间之间的文档现在问题来了,如果只用zz="}+tName+{"&Form="frm_originality"&HasResult!="1"&del!="1"这一段公式,那么还好,代理很快可以运行完,大概值需要1秒钟如果加上@Created>=@TextToTime("}+Cstr(doc.startdate(0))+{")&@Created<=@TextToTime("}+Cstr(doc.enddate(0))+{")}这一段时间比较,代理运行需要10秒钟,是因为我这样写效率太低的原因嘛?有没有朋友遇到过,大家帮着分析一下吧。
解决方案
解决方案二:
@Created>=[}+doc.startdate(0)+{]&@Created<=[}+doc.enddate(0)+{]}把你说的那段改成这个试试(括弧你再检查下,我自己有点晕),就是data类型在公示里可以用[]裹起来,等同于字符串的""
解决方案三:
说错了,是日期类型在公式里可以用[]裹起来
解决方案四:
不需要那么麻烦吧。试试这个:searchFormula$={zz="}+tName+{"&Form="frm_originality"&HasResult!="1"&del!="1"&@Created-startdate>=0&@Created-enddate<=0}前提是startdate和enddate都是Date/Time类型的。
解决方案五:
这种情况我也遇到过,加上时间这个条件会让当前数据库重建索引,你直接在视图上添加那些条件你刷新显示数据都会那样。不过也没找到什么好办法解除那个问题