Foxtable(狐表)用户栏目专家坐堂 → 关于SQL外部数据表的加载


  共有21666人关注过本帖树形打印复制链接

主题:关于SQL外部数据表的加载

帅哥哟,离线,有人找我吗?
woodiy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
关于SQL外部数据表的加载  发帖心情 Post By:2009/5/31 10:27:00 [显示全部帖子]

数据源采用的是SQL外部数据源,为了加快项目的打开速度

能否在打开项目的时候只加载表格,而不加载任何记录, 然后通过按钮“加载”来有选择的加载呢,或是打开某个表格时再加载呢?


 回到顶部
帅哥哟,离线,有人找我吗?
woodiy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
  发帖心情 Post By:2009/5/31 11:04:00 [显示全部帖子]

BeforeLoadOuterTable

准备加载外部数据表的时候执行,可以在此修改Select语句,如果数据量很大,可以通过用此事件设置条件,只加载部分数据甚至不加载数据,在运行的过程中再加载数据。
注意此时必须通过e.User来引用用户。



     
如果想让录入员在打开项目时,默认为不加载数据. 在项目的BeforeLoadOuterTable 属性中加入如下代码:



If
e.DataTableName = "订单" AndAlso e.User.Name = "录入员" Then
    e.SelectString = "Select * From [订单] Where False"
End If


注意此时必须通过e.User来引用用户。 --------------我现在还没有设置用户,该如何使用此功能,谢谢!

[此贴子已经被作者于2009-5-31 11:48:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
woodiy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
  发帖心情 Post By:2009/5/31 11:53:00 [显示全部帖子]

我现在的BeforeLoadOuterTable 设置如下代码:

If e.DataTableName = "通讯往来" AndAlso e.User.Type <> UserTypeEnum.Developer  Then
    e.SelectString = "Select * From [通讯往来] Where False"
End If


其它地方都没有任何设置,为什么表格数据还是加载的啊!

 回到顶部
帅哥哟,离线,有人找我吗?
woodiy
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
回复:(woodiy)关于SQL外部数据表的加载  发帖心情 Post By:2009/5/31 12:12:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:未标题-1.gif
图片点击可在新窗口打开查看


楼上的兄弟啊,请再指点一下,我这样设置还是不行啊!
If e.DataTableName = "通讯往来" AndAlso e.User.Type = UserTypeEnum.Developer  Then
    e.SelectString = "Select * From [通讯往来] Where False"
End If


谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
woodiy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
  发帖心情 Post By:2009/5/31 12:37:00 [显示全部帖子]

在设置外部表的“过滤/排序”中直接设置false不行吗?



e.SelectString = "Select * From [通讯往来] Where False"

以上两个都是不行的,都有False什么错误!

我现在这样的设置是可以的:

If e.DataTableName = "通讯往来" AndAlso e.User.Name = "开发者" Then
e.SelectString = "Select * From [通讯往来] Where ID='0'"
End If

 回到顶部
帅哥哟,离线,有人找我吗?
woodiy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
  发帖心情 Post By:2009/5/31 12:41:00 [显示全部帖子]

但是现在的问题是如何按需要加载数据呢?谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
woodiy
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
  发帖心情 Post By:2009/5/31 12:49:00 [显示全部帖子]

以下是引用yangming在2009-5-31 12:46:00的发言:
加载今天的订单
e.SelectString = "Select * From [订单] Where [日期] = #" & Date.Today & "#"


加载折扣在0.05和0.15之间的订单
e.SelectString = "Select * From [订单] Where [折扣] Between 0.05 And 0.15"


我想通过按钮的Chick事件来有条件的加载,该如何设置?


 回到顶部
帅哥哟,离线,有人找我吗?
woodiy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
  发帖心情 Post By:2009/5/31 15:17:00 [显示全部帖子]

谢谢关位仁兄的帮助,我已经解决,具体方法如下:

利用SQL作为外部数据源,为了有效提高项目的打开速度,在项目属性的BeforeLoadOuterTable设置如下代码来控制载入外部数据表,而不加载外部数据记录:

If e.DataTableName = "通讯往来" AndAlso e.User.Name = "开发者" Then    ’我还没有设置登录用户
e.SelectString = "Select * From [通讯往来] Where ID='0'"            ‘ID 为SQL表的关键字段
End If

然后在需要加载的时候,可以用按钮或是菜单的Chick事件来加载

DataTables("通讯往来").LoadFilter = "[ID] <> '0' ORDER BY ID DESC "   '通过ID来排序。
DataTables("通讯往来").Load() 
 


 回到顶部
帅哥哟,离线,有人找我吗?
woodiy
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
  发帖心情 Post By:2009/5/31 20:36:00 [显示全部帖子]

ID 是SQL主键字段  从1开始递增的,所以=0 就是不加载!

 回到顶部