以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 项目启动时的部分数据加载问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=49800) |
-- 作者:ndxfke -- 发布时间:2014/4/24 10:58:00 -- 项目启动时的部分数据加载问题 看了帮助,也想实现动态加载数据来提高启动速度。
情况是这样的:我有个sql数据源,想在项目启动时,只加载特定几个数据表,其它暂不加载。
该写哪个事件呢,这两个事件看来看去,有点晕忽。
而尝试这两种试,没实现。求帮助.....
BeforeLoadInnerTable (启动报错,说找到不表)
If e.DataTableName <> "平台管理" OrElse e.DataTableName <> "平台列表" OrElse e.DataTableName <> "快捷列表" OrElse e.DataTableName <> "系统选项列表"
BeforeLoadOuterTable (启动正常,速度没提升,数据也被加载了)
If e.DataTableName <> "平台管理" OrElse e.DataTableName <> "平台列表" OrElse e.DataTableName <> "快捷列表" |
-- 作者:有点甜 -- 发布时间:2014/4/24 11:05:00 -- 在BeforeLoadOuterTable写代码控制加载便可。
If e.DataTableName <> "平台管理" OrElse e.DataTableName <> "平台列表" OrElse e.DataTableName <> "快捷列表"
http://www.foxtable.com/help/topics/0670.htm
[此贴子已经被作者于2014-4-24 11:05:15编辑过]
|
-- 作者:ndxfke -- 发布时间: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 -- 发布时间:2014/4/24 11:23:00 -- 貌似看懂错误的意思了...
再调试下 |
-- 作者:有点甜 -- 发布时间:2014/4/24 11:25:00 -- 或者改成这样也行
If e.DataTableName <> "平台管理" OrElse e.DataTableName <> "平台列表" OrElse e.DataTableName <> "快捷列表" |
-- 作者:ndxfke -- 发布时间:2014/4/24 13:35:00 -- 这个好用,我正在愁有的没有ID怎么办呢 |
-- 作者:ndxfke -- 发布时间:2014/4/24 14:03:00 -- 这个还没搞定,问问,这两者的区别在哪儿呢。
是不是,前者会加载出一个空表,后者不会?
e.SelectString = "Select * from {" & e.DataTableName & "} where 1=2"
与
e.Cancel = true |
-- 作者:有点甜 -- 发布时间:2014/4/24 14:25:00 -- 回复7楼,是的。 |
-- 作者:ndxfke -- 发布时间:2014/4/24 15:03:00 -- 现在还有两个问题,需要求助。
1、有两个表总提示名表无效,但我在 sql和外部数据菜单列表中,怎么也找不到这两个表。有什么方法解决呢?
2、调试过程中,没有进入到else里去执行,什么个原因呢? If e.DataTableName <> "平台管理" Or e.DataTableName <> "平台列表" Or e.DataTableName <> "快捷列表" Or e.DataTableName <> "系统选项列表" |
-- 作者:有点甜 -- 发布时间:2014/4/24 15:07:00 -- 代码这样写,看弹出的表名
MessageBox.show(e.DataTableName )
If e.DataTableName <> "平台管理" Or e.DataTableName <> "平台列表" Or e.DataTableName <> "快捷列表" Or e.DataTableName <> "系统选项列表" |