以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 动态加载数据问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=5891) |
||||
-- 作者:wqc360 -- 发布时间:2010/1/29 13:41:00 -- 动态加载数据问题 现在有2个问题: 1.目录树加载数据和文本框筛选各自独立实现,即用目录树加载时,不管文本框,文本框输入数据时,不管目录树,各自独立实现加载数据,怎样实现。 2.DataTables("产品工序")和DataTables("产品工艺")表加载数据条件为图号列=产品目录表光标所在行图号列相等。(注意,不是窗口关联表Tables("产品目录.产品工序"),和Tables("产品目录.产品工序.产品工艺").因为我还有其他窗口要调用数据,需要图号一样的3个表都加载数据,本窗口只显示关联数据而以)
[此贴子已经被作者于2010-1-29 13:41:23编辑过]
|
||||
-- 作者:mr725 -- 发布时间:2010/1/29 15:11:00 -- 1、 If 文本框 = “” 。。。。执行你原来的代码。。。。 修改你原来的代码的filter条件中的‘ Value(x) ’ |
||||
-- 作者:wqc360 -- 发布时间:2010/1/29 16:38:00 -- 谢谢mr725的回复,但是还是不行。 我在产品目录CurrentChanged事件中加代码: With DataTables("产品工序") .LoadFilter = "[图号] = \'" & Tables("产品目录").Current("图号") & "\'" .Load() End With With DataTables("产品工艺") .LoadFilter = "[图号] = \'" & Tables("产品目录").Current("图号") & "\'" .Load() End With 功能达到要求,但是产品目录也是动态加载数据,在切换数据时,(从A到B条件加载数据切换时)有空行的存在,就报错。帮我看看怎样加一个空行时不执行可能就对了。 我在窗口控件文本框TextChanged事件加入代码: Dim Filter As string with e.Form Dim txb1 As WinForm.TextBox = .Controls("TextBox1") Filter = "[图号] Like \'*" & txb1.text & "*\'or [名称] Like \'*" & txb1.text & "*\'" end with DataTables("产品目录").LoadFilter = Filter DataTables("产品目录").Load() 还是有冲突,帮我看看,应该怎么改才合适。
|
||||
-- 作者:mr725 -- 发布时间:2010/1/29 16:47:00 -- 如果因为空行报错的话,加上: |
||||
-- 作者:wqc360 -- 发布时间:2010/1/29 17:28:00 -- 谢谢mr725,空行问题解决,太好了。现在看看这一段怎么搞: Dim Filter As string with e.Form Dim txb1 As WinForm.TextBox = .Controls("TextBox1") Filter = "[图号] Like \'*" & txb1.text & "*\'or [名称] Like \'*" & txb1.text & "*\'" end with DataTables("产品目录").LoadFilter = Filter DataTables("产品目录").Load() |
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/1/29 17:38:00 -- LoadFilter的语法是SQL格式: LIKE运算符 LIKE运算符用于将指定表达式的值和一个模式字符串进行比较,判断两者是否匹配。 LIKE可以使用通配符,通配符包括: %(百分号) Like \'C%\', 表示以字符C开始的值。 在例如: Like \'A_e%\' 表示第一个字母是A,第三个字母是e。 找出姓名为三个字,且第二个字是“文”的客户: Select * From {客户} Where 姓名 Like \'_文_\' 找出客户表中的贸易公司: SELECT * FROM {客户} WHERE 公司名称 LIKE \'%贸易%\' 可以利用NOT关键词进行反向操作,例如: SELECT * FROM {客户} WHERE 公司名称 NOT LIKE \'%贸易%\' 找出所有非贸易公司。 |
||||
-- 作者:wqc360 -- 发布时间:2010/1/29 17:48:00 -- 如果我把表直接加载,用代码: with e.Form Dim txb1 As WinForm.TextBox = .Controls("TextBox1") Tables("产品目录").Filter = "[图号] Like \'*" & txb1.text & "*\'or [名称] Like \'*" & txb1.text & "*\'" end with 是可以筛选的,再加上重新加载数据就不行,搞不懂,帮帮忙了,谢谢 |
||||
-- 作者:mr725 -- 发布时间:2010/1/29 18:09:00 -- 这样就可以了: Dim Filter As string with e.Form Dim txb1 As WinForm.TextBox = .Controls("TextBox1") Filter = "[图号] Like \'*" & txb1.text & "*\'or [名称] Like \'*" & txb1.text & "*\'" end with Tables("产品目录").Filter = Filter 数据行没有全部load过来时,Tables("产品目录").Filter = Filter 还是不行~ !!! [此贴子已经被作者于2010-1-29 20:57:21编辑过]
|
||||
-- 作者:wqc360 -- 发布时间:2010/1/29 21:48:00 -- 8楼也是不行,谢谢了,看看怎么做,窗口文本框输入数据模糊查询加载数据问题,可以搞一个课题供大家研究了。呵呵 [此贴子已经被作者于2010-1-29 22:03:15编辑过]
|
||||
-- 作者:wqc360 -- 发布时间:2010/1/29 22:03:00 -- If Vars("用户组") = "浏览员" e.Form.Controls ("产品目录录入"). Visible = False End If Dim cmd As New SQLCommand Dim dt As DataTable cmd.C cmd.CommandText = "SELECT DISTINCT 客户,机型,所属部分,图号 From 产品目录" dt = cmd.ExecuteReader() Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") trv.BuildDataTree(dt, "","客户", "机型","所属部分","图号") if tables("产品目录").count > 0 Tables("产品目录").OpenView("车间主管") Tables("产品目录.产品工序").OpenView("车间主管") Tables("产品目录.产品工序.产品工艺").OpenView("车间主管") end if |