以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  怎样用代码新建表,以实现真正的动态加载表?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=4630)

--  作者:cpayinyuan
--  发布时间:2009/10/15 12:04:00
--  怎样用代码新建表,以实现真正的动态加载表?

如题,记不清狐表中有无此功能了,请教一下
(1)怎样用代码新建一个表(不是临时表,但缺省的表结构也可);以实现真正的动态加载表?

[此贴子已经被作者于2009-10-15 17:07:31编辑过]

--  作者:mr725
--  发布时间:2009/10/15 12:07:00
--  
我记得只能建立临时表
--  作者:cpayinyuan
--  发布时间:2009/10/15 12:25:00
--  
    我想要实现的功能是,在打开项目的时候,项目中没有表(或有很少表),,在使用的过程中,根据需要,用代码新建一些空表(指定表名的内部表,反正是空表,表结构是缺省的也无所谓,),然后再用DataTable 的Fill方法加载数据.
    之所以有这样的需求,是因为经测试,狐表项目中表越多打开项目越慢,当有几十个表时,即使全部是内部表,即使不加载任何数据,也需要几分钟的时间,所以,我想在打开项目时打开非常少的表,在项目运行过程中,根据需要,再动态增加表,并利用DataTable 的fill方法动态加载数据.

  补充:
  用系统命令Syscmd.Table.AddDataTable()不行,这个系统命令需要交互,我希望用代码直接指定表名生成内部数据表,用DataTableBuilder也不行,因为它只能生成临时表,临时表不能编辑和保存数据.
   由于新建的表只需要指定表名即可,不需要指定表结构,我想这个应该不难解决吧? 希望贺老师想个办法!
[此贴子已经被作者于2009-10-15 12:52:25编辑过]

--  作者:cpayinyuan
--  发布时间:2009/10/15 12:53:00
--  
以下是引用cpayinyuan在2009-10-15 12:25:00的发言:
    我想要实现的功能是,在打开项目的时候,项目中没有表(或有很少表),,在使用的过程中,根据需要,用代码新建一些空表(指定表名的内部表,反正是空表,表结构是缺省的也无所谓,),然后再用DataTable 的Fill方法加载数据.
    之所以有这样的需求,是因为经测试,狐表项目中表越多打开项目越慢,当有几十个表时,即使全部是内部表,即使不加载任何数据,也需要几分钟的时间,所以,我想在打开项目时打开非常少的表,在项目运行过程中,根据需要,再动态增加表,并利用DataTable 的fill方法动态加载数据.

  补充:
  用系统命令Syscmd.Table.AddDataTable()不行,这个系统命令需要交互,我希望用代码直接指定表名生成内部数据表,用DataTableBuilder也不行,因为它只能生成临时表,临时表不能编辑和保存数据.
   由于新建的表只需要指定表名即可,不需要指定表结构,我想这个应该不难解决吧? 希望贺老师想个办法!
[此贴子已经被作者于2009-10-15 12:52:25编辑过]

   希望贺老师想想办法!


--  作者:狐狸爸爸
--  发布时间:2009/10/15 12:54:00
--  
用外部数据源,动态加载。
--  作者:cpayinyuan
--  发布时间:2009/10/15 13:08:00
--  
以下是引用狐狸爸爸在2009-10-15 12:54:00的发言:
用外部数据源,动态加载。 
    
      我现在用的就是外部数据源,而且是动态加载。没用的,解决不了打开项目太慢的问题。

      现在问题的关键是,在打开项目的时候,即使全部加载空表,当表较多时,打开项目的速度也会非常慢,慢得无法忍受。因为在一个项目中有很多个功能可能同时使用,多个表也可能同时使用,所以,在项目中同一时间需要使用的表可能很多。项目中需要同时共存多个表与打开项目时的速度,这两者是矛盾的。解决这个矛盾的最好途径,就是在打开项目时打开较少的表,其他的表在项目运行过程中动态添加,再动态加载!

     因为现在DataTable有了Fill方法,所以,只要FoxTable提供一个用代码动态建立内部数据表的功能,就可以利用Fill方法加载任意表的数据,所有的问题都会很容易解决了!

    总之,我认为,DataTable有了Fill方法,如果不能用代码动态建立和删除内部数据表,动去加载表的作用就受到很大的限制;如果DataTable的Fill方法与代码动态建立和删除内部数据表相配合,就会威力无穷!实现真正的动态加载表!
[此贴子已经被作者于2009-10-15 13:56:12编辑过]

--  作者:mr725
--  发布时间:2009/10/15 14:31:00
--  
查阅任何一款软件的Sql数据库,你会发现,软件所对应的数据库中,至少有70%或之上,是空表。 因此在数据库中先建好需要的空表,不用事先定义好这些空表(即项目中事先没有这些空表),需要时用OuterTableBuilder编码生成外部数据表,再操作。应该和你的要求一致。
--  作者:cpayinyuan
--  发布时间:2009/10/15 14:42:00
--  
以下是引用mr725在2009-10-15 14:31:00的发言:
查阅任何一款软件的Sql数据库,你会发现,软件所对应的数据库中,至少有70%或之上,是空表。 因此在数据库中先建好需要的空表,不用事先定义好这些空表(即项目中事先没有这些空表),需要时用OuterTableBuilder编码生成外部数据表,再操作。应该和你的要求一致。

OuterTableBuilder好像可以!我试试,谢谢老兄!


--  作者:cpayinyuan
--  发布时间:2009/10/15 16:11:00
--  
以下是引用mr725在2009-10-15 14:31:00的发言:
查阅任何一款软件的Sql数据库,你会发现,软件所对应的数据库中,至少有70%或之上,是空表。 因此在数据库中先建好需要的空表,不用事先定义好这些空表(即项目中事先没有这些空表),需要时用OuterTableBuilder编码生成外部数据表,再操作。应该和你的要求一致。

    我认真试过了,OuterTableBuilder的确可以动态生成外部表,但是,速度比DataTable的Fill慢得太多了(差不多2-3倍吧).
    在打开项目时少加载表,我的本意是加快速度的,现在我改为OuterTableBuilder之后,启动项目的速度基本上没有多大改进,运行OuterTableBuilder反而浪费了很多时间,看起来用这种方法不实用.对加快启动速度没有实用价值!

    所以,还是建议贺老师认真考虑我6楼的建议,或者提供更好/更快的解决办法!

[此贴子已经被作者于2009-10-15 16:16:21编辑过]

--  作者:cpayinyuan
--  发布时间:2009/10/15 17:03:00
--  
希望贺老师关注一下!