Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
下载信息 [文件大小: 下载次数: ] | |
![]() |
文件点了半天没打开。
SQL SERVER 数据源用
WHERE 字段 like '%关键字%'
文件点了半天没打开。
SQL SERVER 数据源用
WHERE 字段 like '%关键字%'
文件可以打开,请重试
对,我就需要动态加载的查询,代码是怎么样的,有例子吗?
ExecuteReader示例
我们知道SQLCommand的ExecuteReader方法用于生成一个临时的DataTable。
我们知道动态生成查询的时候用QueryBuilder。
动态生成外部表的时候用OuterTableBuilder。
而GroupTableBuilder和CrossTableBuilder也可以直接统计后台数据,只需将其FromServer属性设为True即可。
那么SQLCommand提供的ExecuteReader方法,会有实际的用途吗?
一般来说,如果没有动态加载数据,而是一次性将所有数据加载到DataTable中,那么ExecuteReader确实没有什么用。
如果采用动态加载数据,那么数据表中的数据就不完整,此时ExecuteReader就派上用场了。
示例一
本示例可以参考CaseStudy目录下的文件“动态加载演示.Table”
假定你有一个订单表,也许有几百个产品,上十万个订单,那么将其全部载入到Foxtable中是不现实的。
能不能用一个目录树列出所有的产品和客户,当我们双击某个产品或客户时,才加载对应的订单呢?
实现这样的功能,其实很简单:
1、首先我们参考大容量数据的管理,使得打开项目的时候,订单表不会加载任何数据。
2、然后新建一个窗口,窗口中插入一个目录树(TreeView),窗口的AfterLod事件代码设为:
Dim
cmd As New SQLCommand这样一旦打开窗口,该目录树列出所有的产品和客户。
由于订单表只是加载了部分数据,所以我们不能直接根据订单表来生成目录树,因为订单表的数据不完整,只能用ExecuteReader方法直接从后台提取完整的产品和客户数据。
注意Select语句中,一定要有DISTINCT关键词,这样返回的才是不重复的产品和客户名单,虽然对目录树的生成没有影响,但是会大大降低数据加载量,对于网络环境,这是非常重要的。
3、最后将目录树的NodeMouseDoubleClick事件设为:
Dim
Value()As String这样我们只需双击某个节点,既可动态加载对应的订单。
此主题相关图片如下:无标题.jpg
CasteStudy目录下还提供了外部数据源动态加载数据的例子,文件名为:动态加载数据(外部数据源).Table
为便于大家测试学习,使用了Access作为外部数据源,如果采用SQL Server,请修改或删除项目事件BeforeConnectOuterDataSource中的代码。
示例二
同样,假定窗口中有一个组合框(ComboBox),希望这个窗口能够列出订单表所有的客户名称,如果订单表采用动态加载,那么显然无法从订单表中获得所有客户名称,只能利用ExecuteReader直接从后台提取:
Dim
cmd As New SQLCommand上述代码可以设置在窗口的AfterLoad事件中。
示例三
QueryBuilder会生成一个Table,用于显示查询结果。
有的时候你可能希望不是以Table形式,而是以DataList的形式在窗口显示查询结果,可以参考:
Dim
cmd As New SQLCommand