以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- sql语句的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89932)
|
-- 作者:ap9709130
-- 发布时间:2016/9/1 16:12:00
-- sql语句的问题
我这个窗口一直没有修改过,以前一直都没有问题,这段时间不能用了,还有几个窗口也发现这个问题,是SQL语句的问题,为什么会这样呢?
代码如下:
With Tables("备案分析窗口_Tbab").DataTable .LoadFilter = "[_Identify] In (S el ect max([_Identify]) from {备案信息确定表3} group by 备案编号)" \'MessageBox.show(.LoadFilter) \'.LoadFilter = "" \'.LoadOrder = "Identify DESC" .LoadTop = 30 .LoadOver = "_Identify" .LoadReverse = True .LoadPage = 0 MessageBox.show(1) .Load() MessageBox.show(2) Dim a As WinForm.Label = e.Form.Controls("Label1") a.text = "共计" & .TotalPages & "页.当前页为1页." End With 经过测试,是Load 那里就出错了,这种语句要怎么改呢?
|
-- 作者:ap9709130
-- 发布时间:2016/9/1 16:20:00
--
此主题相关图片如下:c)y{no~7}nqvu36wcebfq.png
|
-- 作者:有点蓝
-- 发布时间:2016/9/1 16:24:00
--
提示什么错误?
去掉 .LoadOver = "_Identify" .LoadReverse = True 试试
|
-- 作者:有点蓝
-- 发布时间:2016/9/1 16:25:00
--
那是查询超时了,sql中数据多的话用In的效率是很差的,特别还要分页
|
-- 作者:ap9709130
-- 发布时间:2016/9/1 16:44:00
--
以前为什么没有问题,还挺快的。数据库只是多了些数据,不会太多的。
|
-- 作者:ap9709130
-- 发布时间:2016/9/1 16:52:00
--
试了三楼的方法,不行。还是会出错
|
-- 作者:ap9709130
-- 发布时间:2016/9/1 16:59:00
--
还有就是:原来我的SQL语句:以前一直都没有问题,用了快一年多了。这段时间也开始出错,图也上上面那个。
FilterVal = "订单编号 in (s el ect [_Identify] from {销售订单主表} where 订单类型 = \'" & lx & "\' And 送货日期 >= \'" & dt1 & "\' and 送货日期 <= \'" & dt2 & "\' and 所属公司 = \'" & gs & "\' And CID In (S e lect [_Identify] from {客户资料表} where " & Filter3 & " And 所属公司 = \'" & gs & "\'))"
但是我改成这样以后,就没有问题了。
FilterVal = "订单编号 in (s el ect [_Identify] from {销售订单主表} where 订单类型 = \'" & lx & "\' And 送货日期 >= \'" & dt1 & "\' and 送货日期 <= \'" & dt2 & "\' and 所属公司 = \'" & gs & "\') And CID In (S el ect [_Identify] from {客户资料表} where " & Filter3 & " And 所属公司 = \'" & gs & "\')"
速度也没有问题。真是奇怪!
|
-- 作者:ap9709130
-- 发布时间:2016/9/1 17:06:00
--
LoadFilter = "[_Identify] In (S el ect max([_Identify]) from {备案信息确定表3} group by 备案编号)" 这种真的不会改了。当初是大红袍老师教我写的。
|
-- 作者:有点蓝
-- 发布时间:2016/9/1 17:46:00
--
这种用“in”的越用到后面问题越大,尽量避免使用。
把下面sql做成视图试试: S el ect max([_Identify]) from {备案信息确定表3} group by 备案编号
然后改成这样 LoadFilter = "[_Identify] In (S el ect [_Identify] from {视图名称} )"
特殊用法建议用sql自己分页
|
-- 作者:ap9709130
-- 发布时间:2016/9/2 11:55:00
--
有点蓝老师
如何做视图啊?能说的祥细点,或者给点资料来看看吗?多谢!
|