以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  我希望在输入窗口绑定的表 中只显示未发货的行,我该如何编写代码?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=20334)

--  作者:apple333
--  发布时间:2012/6/5 13:21:00
--  我希望在输入窗口绑定的表 中只显示未发货的行,我该如何编写代码?
 

老师,您好!

请教您,我用帮助文件自定义录入界面之二方法设计录入窗口,

问题是:我希望在"窗口3_Table1" 中只显示未发货的行,我该如何编写代码?我现有的代码如下:

1、新增一个窗口,类型为"DropDownForm",窗口插入一个TextBox和一个Table控件,Table控件的“作为副本”属性设置为True,“允许编辑”属性设置为False,并绑定到订单表,设定显示列为:订单号|100|产品号|100|产品名称|90 |规格尺寸|100|订购数量|90|单位|60。

2、将TextBox1的TextChanged事件代码设为:

Dim txt As String = e.Form.Controls("TextBox1").Text

Dim tbl As Table = Tables("窗口3_Table1")

If txt = "" Then

    tbl.Filter = ""

Else

    txt = "\'*" & txt & "*\'"

    tbl.Filter = "订单号 Like " & txt & " Or 产品号 Like " & txt & " Or 产品名称 Like " & txt & " Or 规格尺寸 Like " & txt

End If



3、将TextBox1的Keydown事件代码设为:


Dim tbl As Table = Tables("窗口3_Table1")

If tbl.Current IsNot Nothing Then

    Forms("窗口3").DropDownBox.Value = tbl.Current("产品号")

End If


4、将Table控件的DoubleClick事件设置为:


Dim tbl As Table = Tables("窗口3_Table1")

If tbl.Current IsNot Nothing Then

    Forms("窗口3").DropDownBox.Value = tbl.Current("产品号")

End If

Forms("窗口3").DropDownBox.CloseDropDown()


5、在项目事件AfterOpenProject事件中加入代码:

Tables("发货单.明细").Cols("产品号").DropForm = "窗口3"



--  作者:狐狸爸爸
--  发布时间:2012/6/5 15:22:00
--  

2、将TextBox1的TextChanged事件代码设为:

Dim txt As String = e.Form.Controls("TextBox1").Text

Dim tbl As Table = Tables("窗口3_Table1")

If txt = "" Then

    tbl.Filter = "发货 = False Or 发货 Is NULL"

Else

    txt = "\'*" & txt & "*\'"

    tbl.Filter = "订单号 Like " & txt & " Or 产品号 Like " & txt & " Or 产品名称 Like " & txt & " Or 规格尺寸 Like " & txt  & " And (发货 = False Or 发货 Is NULL)"

End If


--  作者:apple333
--  发布时间:2012/6/5 15:33:00
--  
受教了,非常感谢!
--  作者:apple333
--  发布时间:2012/6/5 17:02:00
--  

我按照上述方法做了,发货列为逻辑列,代码如下:不知哪里不对,窗口3_Table1中仍然没有过滤已发货订单。

2、将TextBox1的TextChanged事件代码设为:

Dim txt As String = e.Form.Controls("TextBox1").Text

Dim tbl As Table = Tables("窗口3_Table1")

If txt = "" Then

    tbl.Filter = "发货 = False "

Else

    txt = "\'*" & txt & "*\'"

    tbl.Filter = "订单号 Like " & txt & " Or 产品号 Like " & txt & " Or 产品名称 Like " & txt & " Or 规格尺寸 Like " & txt  & " And (发货 = False )"

End If


--  作者:apple333
--  发布时间:2012/6/5 17:54:00
--  
我试了,需在TextBox1先输入任意字,然后清除才有效果,我该如何改进?
--  作者:狐狸爸爸
--  发布时间:2012/6/5 17:55:00
--  

2、将TextBox1的TextChanged事件代码设为:

Dim txt As String = e.Form.Controls("TextBox1").Text

Dim tbl As Table = Tables("窗口3_Table1")

If txt = "" Then

    tbl.Filter = "发货 = False  Or 发货 Is Null "

Else

    txt = "\'*" & txt & "*\'"

    tbl.Filter = "(订单号 Like " & txt & " Or 产品号 Like " & txt & " Or 产品名称 Like " & txt & " Or 规格尺寸 Like " & txt  & ") And (发货 = False Or 发货 Is Null )"

End If


--  作者:apple333
--  发布时间:2012/6/5 18:25:00
--  

我照上面方法改完又试了,还是需在TextBox1先输入一次,然后清除才有效果。


--  作者:apple333
--  发布时间:2012/6/5 18:27:00
--  
请教老师,TextChanged事件是不是需要在TextBox1内容发生改变后触发事件?
--  作者:apple333
--  发布时间:2012/6/5 22:51:00
--  

老师,我将TextBox1的Enter事件代码设为:

Dim txt As String = e.Form.Controls("TextBox1").Text

Dim tbl As Table = Tables("窗口3_Table1")

If txt = "" Then

    tbl.Filter = "发货 = False  Or 发货 Is Null "

End if

 

 

这样可以吗?


--  作者:blackzhu
--  发布时间:2012/6/6 7:49:00
--  

你在窗口事件直接写入

 

Dim tbl As Table = Tables("窗口3_Table1")

tbl.Filter = "发货 = False  Or 发货 Is Null " 

 

  这样不就得了.那么麻烦的做法.通过框去做事件.