以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- SQL外部数据源进行模糊查找? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=4854) |
||||
-- 作者:woodiy -- 发布时间:2009/11/2 19:39:00 -- SQL外部数据源进行模糊查找? 此主题相关图片如下:qq截图未命名.png 说明:整个出库主表与出库明细均为SQL外部数据源 打开窗口时动态加前TOP 100 窗口中的表格为TABLE副本,如何进行如上图所示的模糊查找?(要求在整个外部数据库中查找)
[此贴子已经被作者于2009-11-2 19:40:26编辑过]
|
||||
-- 作者:lxl -- 发布时间:2009/11/2 23:42:00 -- 文件点了半天没打开。 |
||||
-- 作者:blackzhu -- 发布时间:2009/11/3 8:03:00 -- Dim dst As Table = Tables("某表") Dim txb1 As WinForm.TextBox = .Controls("TextBox1") Tables("窗口中的Table").Filter = "[列名1] Like \'*" & txb1.text & "*\' or [列名2] Like \'*" & txb1.text & "*\'" 放在textbox的文本值改变的事件中.列名自己加. |
||||
-- 作者:blackzhu -- 发布时间:2009/11/3 8:12:00 -- 上面的代码只能用于已加载的数据,对于你这个还可以利用动态加载的方法查询. |
||||
-- 作者:woodiy -- 发布时间:2009/11/3 9:22:00 -- 以下是引用lxl在2009-11-2 23:42:00的发言:
文件点了半天没打开。 文件可以打开,请重试 |
||||
-- 作者:woodiy -- 发布时间:2009/11/3 9:24:00 -- 以下是引用blackzhu在2009-11-3 8:12:00的发言:
上面的代码只能用于已加载的数据,对于你这个还可以利用动态加载的方法查询. 对,我就需要动态加载的查询,代码是怎么样的,有例子吗? |
||||
-- 作者:lxl -- 发布时间:2009/11/3 9:52:00 -- ExecuteReader示例 我们知道SQLCommand的ExecuteReader方法用于生成一个临时的DataTable。 示例一 本示例可以参考CaseStudy目录下的文件“动态加载演示.Table” 假定你有一个订单表,也许有几百个产品,上十万个订单,那么将其全部载入到Foxtable中是不现实的。 1、首先我们参考大容量数据的管理,使得打开项目的时候,订单表不会加载任何数据。 2、然后新建一个窗口,窗口中插入一个目录树(TreeView),窗口的AfterLod事件代码设为: Dim cmd As New SQLCommandDim dt As DataTable cmd.CommandText = "SELECT DISTINCT 产品,客户 From {订单}" dt = cmd.ExecuteReader() Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") trv.BuildDataTree(dt, "","产品", "客户") 这样一旦打开窗口,该目录树列出所有的产品和客户。 3、最后将目录树的NodeMouseDoubleClick事件设为: Dim Value()As StringDim Filter As string Value = e.Node.FullPath.Split("\\") Select Case e.Node.Level Case 0 Filter ="[产品] = \'" & Value(0) & "\'" Case 1 Filter ="[产品] = \'" & Value(0) & "\' And [客户] = \'" & Value(1) & "\'" End Select DataTables("订单").LoadFilter = Filter DataTables("订单").Load() 这样我们只需双击某个节点,既可动态加载对应的订单。
示例二 同样,假定窗口中有一个组合框(ComboBox),希望这个窗口能够列出订单表所有的客户名称,如果订单表采用动态加载,那么显然无法从订单表中获得所有客户名称,只能利用ExecuteReader直接从后台提取: Dim cmd As New SQLCommandDim dt As DataTable Dim cmb As WinForm.ComboBox cmd.CommandText = "SELECT DISTINCT 客户 From {订单}" dt = cmd.ExecuteReader() cmb = e.Form.Controls("ComboBox1") cmb.ComboList= dt.GetComboListString("客户") 上述代码可以设置在窗口的AfterLoad事件中。 示例三 QueryBuilder会生成一个Table,用于显示查询结果。 Dim cmd As New SQLCommandDim dt As DataTable cmd.CommandText = "SELECT * From {订单} Where 产品 = \'PD01\'" dt = cmd.ExecuteReader() Dim dst As WinForm.DataList = e.Form.Controls("DataList1") dst.DataTable = dt dst.Build() 自己试试:) [此贴子已经被作者于2009-11-3 9:57:55编辑过]
|