以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  还是filter  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=63537)

--  作者:machle
--  发布时间:2015/1/23 0:58:00
--  还是filter
还是那三个text,一个完全匹配,两个模糊匹配,从两个表中查,帮忙再看看吧。
两个表筛出来,结果总是一行。每个text筛出至少一条数据的话,按说应该至少三行才对。但结果总是后面的覆盖前面的,最后显示一条数据。


Dim Filter1 As String
Dim Filter2 As String
Dim Filter3 As String
Dim Filter As String
Dim txt1 As String = e.Form.Controls("TextBox7").Text
Dim txt2 As String = e.Form.Controls("TextBox8").Text
Dim txt3 As String = e.Form.Controls("TextBox9").Text



txt1 = "\'" & txt1 & "\'"
Filter1 = "编号 = " & txt1

txt2 = "\'%" & txt2 & "%\'"
txt3 = "\'%" & txt3 & "%\'"
Filter2 = "公司名称 Like " & txt2
Filter3 = "产品名称 Like " & txt3

If txt1 <> "\'\'" And txt2 <>"\'%%\'" And txt3 <>"\'%%\'" Then
   filter = filter1 & " or " & filter2 & " or " & filter3
 
End If

If txt1 = "\'\'" And txt2 <>"\'%%\'" And txt3 <>"\'%%\'" Then
   filter = filter2 & " or " & filter3

End If

If txt1 = "\'\'" And txt2 ="\'%%\'" And txt3 <>"\'%%\'" Then
   filter = filter3

End If

If txt1 <> "\'\'" And txt2 ="\'%%\'" And txt3 <>"\'%%\'" Then
   filter = filter1 & " or " & filter3

End If

If txt1 <> "\'\'" And txt2 ="\'%%\'" And txt3 ="\'%%\'" Then
   filter = filter1

End If

If txt1 = "\'\'" And txt2 <>"\'%%\'" And txt3 ="\'%%\'" Then
   filter = filter2

End If

If txt1 = "\'\'" And txt2 ="\'%%\'" And txt3 ="\'%%\'" Then
   messagebox.show("请填写要搜索的内容","提示")

End If

If txt1 <> "\'\'" And txt2 <>"\'%%\'" And txt3 ="\'%%\'" Then
   filter = filter1 & " or " & filter2

End If

Dim dr1 As DataRow
With DataTables("ChemSign1")    
    
         .LoadFilter = Filter
    .Load
    dr1 = .Find(Filter)

End With

Dim dr2 As DataRow
With DataTables("ChemSign2")    
    
         .LoadFilter = Filter
    .Load
    dr2 = .Find(Filter)

End With


--  作者:machle
--  发布时间:2015/1/23 0:58:00
--  
 我要被这个filter折磨死了
--  作者:新福星
--  发布时间:2015/1/23 5:54:00
--  
Dim dr1 As DataRow
With DataTables("ChemSign1")    
    
         .LoadFilter = Filter
         .Loadtop=“”
    .Load
    dr1 = .Find(Filter) 

End With

Dim dr2 As DataRow
With DataTables("ChemSign2")    
    
         .LoadFilter = Filter
         .Loadtop=“
    .Load
这样改试试
    dr2 = .Find(Filter) 

End With

--  作者:machle
--  发布时间:2015/1/23 7:29:00
--  回复:(新福星)Dim dr1 As DataRowWith DataTables(...
 谢谢,增加那个top的一行,内容第一次搜的挺好,多次运行后面就不变化了,结果就不对了。
之前我那代码换了台电脑,运行却能出正确结果。有些郁闷。到底是为啥?
--  作者:machle
--  发布时间:2015/1/23 8:03:00
--  回复:(machle)回复:(新福星)Dim dr1 As DataRow...
 刚检查运行,又不行了。不知道代码到底哪里有问题。
--  作者:Bin
--  发布时间:2015/1/23 8:05:00
--  
弹出你的FIlter看看 值是什么
--  作者:machle
--  发布时间:2015/1/23 8:12:00
--  回复:(Bin)弹出你的FIlter看看 值是什么
 假如说前两个text有文字,点查找按钮,filter是
编号 = \'1203\' or 公司名称 Like \'%公司%\'
--  作者:Bin
--  发布时间:2015/1/23 8:17:00
--  
条件没错啊.
--  作者:machle
--  发布时间:2015/1/23 8:26:00
--  回复:(Bin)条件没错啊.
 把昨天您回复的那个按钮的代码直接复制过来,对应改完,前面那个页面一点问题没有,这个页面每次就只查出一行数据。感觉是只查出text2的,好像后面的把前面的覆盖了。
--  作者:Bin
--  发布时间:2015/1/23 8:27:00
--  
根据你7楼的条件,没有错.除非没有符合条件的数据.