Foxtable(狐表)用户栏目专家坐堂 → 项目启动时的部分数据加载问题


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

主题:项目启动时的部分数据加载问题

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


加好友 发短信
等级:三尾狐 帖子:792 积分:5649 威望:0 精华:0 注册:2013/12/9 20:12:00
项目启动时的部分数据加载问题  发帖心情 Post By:2014/4/24 10:58:00 [只看该作者]

看了帮助,也想实现动态加载数据来提高启动速度。

 

情况是这样的:我有个sql数据源,想在项目启动时,只加载特定几个数据表,其它暂不加载。

 

该写哪个事件呢,这两个事件看来看去,有点晕忽。

 

而尝试这两种试,没实现。求帮助.....

 

BeforeLoadInnerTable  (启动报错,说找到不表)

 

If e.DataTableName <> "平台管理" OrElse e.DataTableName <> "平台列表" OrElse e.DataTableName <> "快捷列表" OrElse e.DataTableName <> "系统选项列表"
    e.SelectString = "_Identify is null"
Else
    e.SelectString = "select * form '" & e.DataTableName & "'"
End If

 

 

BeforeLoadOuterTable   (启动正常,速度没提升,数据也被加载了)

 

If e.DataTableName <> "平台管理" OrElse e.DataTableName <> "平台列表" OrElse e.DataTableName <> "快捷列表"
    e.Cancel = True
Else
    e.Filter = ""
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/24 11:05:00 [只看该作者]

 在BeforeLoadOuterTable写代码控制加载便可。

 

If e.DataTableName <> "平台管理" OrElse e.DataTableName <> "平台列表" OrElse e.DataTableName <> "快捷列表"
    e.SelectString = "Select * from {" & e.DataTableName  & "} where [_Identify] Is null"
End If

 

http://www.foxtable.com/help/topics/0670.htm

 

[此贴子已经被作者于2014-4-24 11:05:15编辑过]

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


加好友 发短信
等级:三尾狐 帖子:792 积分:5649 威望:0 精华:0 注册:2013/12/9 20:12:00
  发帖心情 Post By:2014/4/24 11:21:00 [只看该作者]

不行呢。

 

---------------------------
错误
---------------------------
加载表"部门设置"失败,详细错误信息:

System.Data.OleDb.OleDbException: 无法完成延迟准备。

无法预定义语句。

列名 '_Identify' 无效。

   在 System.Data.OleDb.OleDbDataReader.ProcessResults(OleDbHResult hr)

   在 System.Data.OleDb.OleDbDataReader.BuildSchemaTableRowset(Object handle)

   在 System.Data.OleDb.OleDbDataReader.GenerateSchemaTable(OleDbDataReader dataReader, Object handle, CommandBehavior behavior)

   在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)

   在 System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)

   在 System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)

   在 System.Data.Common.DbDataAdapter.FillSchemaInternal(DataSet dataset, DataTable datatable, SchemaType schemaType, IDbCommand command, String srcTable, CommandBehavior behavior)

   在 System.Data.Common.DbDataAdapter.FillSchema(DataTable dataTable, SchemaType schemaType, IDbCommand command, CommandBehavior behavior)

   在 System.Data.Common.DbDataAdapter.FillSchema(DataTable dataTable, SchemaType schemaType)

   在 Foxtable.Ol01000l00O10Ol.O00Oll001OO100(OleDbConnection OlO101l00O, String O101lOO0O1l0, String O01OOl0ll10OO, DataSet O0ll01l0l10, DataTableCollection OOlOO1l0010O, String O0llO0O000l1l1l, Boolean Ol1l1O10l1, OleDbConnection O1ll001O0O0llO1, UserInfo O0lOOO, DataSet O0l11111OOO1, Int32 OOlO10O1O10l001)
---------------------------
确定  
---------------------------


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


加好友 发短信
等级:三尾狐 帖子:792 积分:5649 威望:0 精华:0 注册:2013/12/9 20:12:00
  发帖心情 Post By:2014/4/24 11:23:00 [只看该作者]

貌似看懂错误的意思了...

 

再调试下


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/24 11:25:00 [只看该作者]

或者改成这样也行

 

If e.DataTableName <> "平台管理" OrElse e.DataTableName <> "平台列表" OrElse e.DataTableName <> "快捷列表"
    e.SelectString = "Select * from {" & e.DataTableName  & "} where 1=2"
End If


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


加好友 发短信
等级:三尾狐 帖子:792 积分:5649 威望:0 精华:0 注册:2013/12/9 20:12:00
  发帖心情 Post By:2014/4/24 13:35:00 [只看该作者]

这个好用,我正在愁有的没有ID怎么办呢

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


加好友 发短信
等级:三尾狐 帖子:792 积分:5649 威望:0 精华:0 注册:2013/12/9 20:12:00
  发帖心情 Post By:2014/4/24 14:03:00 [只看该作者]

这个还没搞定,问问,这两者的区别在哪儿呢。

 

是不是,前者会加载出一个空表,后者不会?

 

e.SelectString = "Select * from {" & e.DataTableName  & "} where 1=2"

 

 

e.Cancel = true


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/24 14:25:00 [只看该作者]

 回复7楼,是的。

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


加好友 发短信
等级:三尾狐 帖子:792 积分:5649 威望:0 精华:0 注册:2013/12/9 20:12:00
  发帖心情 Post By:2014/4/24 15:03:00 [只看该作者]

现在还有两个问题,需要求助。

 

1、有两个表总提示名表无效,但我在 sql和外部数据菜单列表中,怎么也找不到这两个表。有什么方法解决呢?

 

2、调试过程中,没有进入到else里去执行,什么个原因呢?

If e.DataTableName <> "平台管理" Or e.DataTableName <> "平台列表" Or e.DataTableName <> "快捷列表" Or e.DataTableName <> "系统选项列表"
    e.SelectString = "Select * from {" & e.DataTableName  & "} where 1=2"
Else
    MessageBox.show(e.DataTableName )
    e.SelectString = "Select * from {" & e.DataTableName  & "}"
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/24 15:07:00 [只看该作者]

代码这样写,看弹出的表名

 

MessageBox.show(e.DataTableName )

 

If e.DataTableName <> "平台管理" Or e.DataTableName <> "平台列表" Or e.DataTableName <> "快捷列表" Or e.DataTableName <> "系统选项列表"
    e.SelectString = "Select * from {" & e.DataTableName  & "} where 1=2"
End If


 回到顶部
总数 22 1 2 3 下一页