以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于查询代码加入限定条件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85205)

--  作者:scofields
--  发布时间:2016/5/20 10:40:00
--  [求助]关于查询代码加入限定条件
红袍老师,最近两天工作忙,有两天没来这里向你交流。之前我向你求助过全表查询的代码:
Tables("FAJHB").DataTable.Load()
Dim str As String = e.form.controls("textbox22").Text
Dim filter As String = "1=2"
For Each c As Col In CurrentTable.Cols
    filter &= " or convert(" & c.name & ",\'System.String\') like \'%" & str & "%\'"
Next
CurrentTable.Filter = filter
这个代码是对Textbox22输入的值在表FAJHB里进行查询,由于公司发货单的有效时间限定为2天,所以在项目的BeforeLoadOuterTable属性里,我加入了以下代码:

If e.DataTableName = "FAJHB"   Then
    Dim StartDate As Date = Date.Today().AddDays(-2)
    e.SelectString = " Select * Fro m {FAJHB} Where [发运日期] > \'" & StartDate & "\'"
End If
看起来都没问题,但是点击查询按钮后,查询的数据是所有符合条件的数据,如果数据量大,势必会影响查询的效率与速度。我想实现:针对查询,只在近两天的范围内查询,不在近两天范围内的不做查询,你看那个查询代码怎么修改?


[此贴子已经被作者于2016/5/20 10:40:25编辑过]

--  作者:大红袍
--  发布时间:2016/5/20 10:42:00
--  
代码根本就没有问题,filter筛选的时候,就是针对已经加载的数据,也就是2天的数据。
--  作者:scofields
--  发布时间:2016/5/20 10:52:00
--  
不对啊,比如说我查询的是粤X45889,这一车在5月3日,5月4日,5月10日,5月20日都有记录,但我查询这个粤X45889的时候,5月3日,5月4日,5月10日,5月20日的数据都出来了,我想实现能不能只查询5月19日至5月20日的数据记录,其他的我不要了。
--  作者:大红袍
--  发布时间:2016/5/20 11:00:00
--  

这句代码去掉

 

Tables("FAJHB").DataTable.Load()

 

或者写成

 

Dim StartDate As Date = Date.Today().AddDays(-2)

Tables("FAJHB").DataTable.LoadFilter = "[发运日期] > \'" & StartDate & "\'"

Tables("FAJHB").DataTable.Load()

[此贴子已经被作者于2016/5/20 11:00:07编辑过]