以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  搜索明细表,列出对应关系  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133957)

--  作者:yetle
--  发布时间:2019/4/24 10:23:00
--  搜索明细表,列出对应关系

窗口表table1和table2,需求:查找出table2包含输入框文字的物供号,table1和table2保持到货单据号对应,怎么写?


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20190424101632.png
图片点击可在新窗口打开查看

TextChanged

Dim txt As Integer = Forms("到货物检").Controls("TextBox1").Text
Dim tbl As Table = Tables("到货物检_Table2")
If txt = "" Then
    tbl.Filter = ""
Else
    txt = "\'%" & txt & "%\'"
    tbl.Filter = "物供号 Like " & txt
End If

CurrentChanged

If Forms("到货物检").Opened()
    Dim t As Table = Tables("到货物检_table2")
    Dim d As Table = Tables("到货物检_table1")    
        If d.Current Is Nothing Then
            t.Filter = "False"
        Else
            t.Filter = "到货单据号 = \'" & d.Current("到货单据号") & "\'                        
        End If
End If

--  作者:有点甜
--  发布时间:2019/4/24 12:31:00
--  

这个意思?

 

    Dim d As Table = Tables("到货物检_table1") 

    txt = "\'%" & txt & "%\'"
    tbl.Filter = "到货单据号 = \'" & d.Current("到货单据号") & "\' and 物供号 Like " & txt

--  作者:yetle
--  发布时间:2019/4/24 15:55:00
--  
这样写不行,意思应该是,搜索出table2中包含文本输入框中包含物供号的数据,任然保持着CurrentChanged中的约束条件代码,
比如table1的数据有三行:
到货物检单号 
0001
0002
0003

table2的数据为
到货物检单号  物供号
0001          1001
0001          1002
0002          1001
0002          1003
0003          1003

假如搜索1001
table1列出的数据应该是:
0001
0002
table2列出的数据应该是:
0001          1001
0001          1002
0002          1001
0002          1003
这样的意思该怎么写?

--  作者:有点甜
--  发布时间:2019/4/24 16:16:00
--  

1、CurrentChanged 事件的代码不能写。

 

2、参考代码

 

Dim t As Table = Tables("到货物检_table2")
Dim str = t.DataTable.GetComboListString("到货物检单号", "物供号=\'1001\'")
str = str.replace("|", "\',\'")
t.Filter = "到货物检单号 in (\'" & str & "\')"

 

 


--  作者:yetle
--  发布时间:2019/4/25 9:11:00
--  
参考了老师的代码,模糊搜索物供号/适用款号/采购单号代码如下:
Dim txt As String = Forms("到货物检").Controls("TextBox1").Text
Dim tbl As Table = Tables("到货物检_Table2")
Dim tbl1 As Table = Tables("到货物检_Table1")
If txt = "" Then
    tbl.Filter = ""
Else
    txt = "\'%" & txt & "%\'"
Dim str = tbl.DataTable.GetComboListString("到货物检单号", "适用款号 Like " & txt & " or convert(物供号, \'System.String\') Like " & txt & "  or 采购单号 Like " & txt)
str = str.replace("|", "\',\'")
tbl.Filter = "到货物检单号 in (\'" & str & "\')"
End If
但在输入框输入任何内容都没反应
[此贴子已经被作者于2019/4/25 9:36:02编辑过]

--  作者:有点甜
--  发布时间:2019/4/25 9:37:00
--  
具体实例发上来测试。
--  作者:yetle
--  发布时间:2019/4/25 11:41:00
--  
TextBox2     TextChanged


[此贴子已经被作者于2019/4/25 17:49:05编辑过]

--  作者:有点甜
--  发布时间:2019/4/25 13:19:00
--  
Dim txt As String = Forms("到货物检").Controls("TextBox2").Text
Dim tbl As Table = Tables("到货物检_Table2")
Dim tbl1 As Table = Tables("到货物检_Table1")
If txt = "" Then
    tbl.Filter = ""
Else
    txt = "\'%" & txt & "%\'"
    Dim str = tbl.DataTable.GetComboListString("到货单据号", "适用款号 Like " & txt & " or convert(物供号, \'System.String\') Like " & txt & "  or 采购单号 Like " & txt)
    str = str.replace("|", "\',\'")
    tbl.Filter = "到货单据号 in (\'" & str & "\')"
End If