以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于模糊查询  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132006)

--  作者:工匠
--  发布时间:2019/3/11 17:27:00
--  [求助]关于模糊查询
老师好,现在有个情况,在窗口根据文本框内容模糊查询时,如果文本框内容为空的话,会对整个表进行加载,数据量大就直接无响应。请教一下,该怎样在文本框内容为空的情况下,不进行查询,并提示查询条件不能为空,谢谢!

Dim t As Table = Tables("订单表")
Dim str As String = e.Form.controls("textbox1").text
Dim filter As String = "1=1"
For Each s As String In str.Split("*")
    filter &= " and 订单号 like \'%" & s & "%\'"
Next
DataTables("订单表").loadfilter= filter
DataTables("订单表").load

--  作者:有点甜
--  发布时间:2019/3/11 17:35:00
--  

1、修改代码

 

Dim t As Table = Tables("订单表")
Dim str As String = e.Form.controls("textbox1").text
Dim filter As String = "1=1"
For Each s As String In str.Split("*")
    filter &= " and 订单号 like \'%" & s & "%\'"
Next
If filter <> "1=1" Then
    DataTables("订单表").loadfilter= filter
    DataTables("订单表").load
End If

 

2、你查询的时候,如果数据量过大,可以用分页处理

 

http://www.foxtable.com/webhelp/scr/1928.htm

 


--  作者:工匠
--  发布时间:2019/3/11 18:16:00
--  
谢谢有点甜老师,分页加载是可以控制加载量。好像修改代码,对文本框“textbox1”为空时,还是会查询出数据来,需求是文本框“textbox1”为空时,不要查询出数据(分页加载不显示一行数据),请老师再帮看看,改下代码,谢谢!
[此贴子已经被作者于2019/3/11 18:16:55编辑过]

--  作者:有点甜
--  发布时间:2019/3/11 18:32:00
--  

Dim t As Table = Tables("订单表")
Dim str As String = e.Form.controls("textbox1").text
Dim filter As String = "1=1"
For Each s As String In str.Split("*")
    filter &= " and 订单号 like \'%" & s & "%\'"
Next
If filter <> "1=1" Then
    DataTables("订单表").loadfilter= filter
    DataTables("订单表").load

Else

    DataTables("订单表").loadfilter= "1=2"
    DataTables("订单表").load
End If


--  作者:工匠
--  发布时间:2019/3/11 19:32:00
--  
谢谢老师,很奇怪,文本框为空值(没有录入内容),点查询A按钮,还是会对订单表进行加载,需要不加载。实际项目使用地方:扫码订单号找到唯一的订单号对应产品码,窗口另一文本框默认绑定该单号对应的产品码,点另个B按钮,查出该产品码的零件表清单(用于生产打领料单)。现在是按下按钮A,同时虚拟按下按钮B的效果。如果是按分页加载,如果单号文本框为空,按下A按钮,会带出设置的加载行数,会对后续操作造成极大困惑。如果按下A按钮,订单号的产品码才零件表没有值,也会带出分页加载带出的行数,困惑更大。(用的外部数据,部分清单不完整),请老师有时间再帮看看,怎么弄,谢谢!
--  作者:有点蓝
--  发布时间:2019/3/11 20:02:00
--  
Dim str As String = e.Form.controls("textbox1").text
If str > "" Then
    Dim filter As String = "1=1"
    For Each s As String In str.Split("*")
        filter &= " and 订单号 like \'%" & s & "%\'"
    Next
    DataTables("订单表").loadfilter= filter
    DataTables("订单表").load
Else
    DataTables("订单表").loadfilter= "1=2"
    DataTables("订单表").load
End If

--  作者:工匠
--  发布时间:2019/3/16 17:44:00
--  
谢谢老师,问题已解决,再次谢谢!