Foxtable(狐表)用户栏目专家坐堂 → 打开狐表项目的速度,以及动态生成表、动态绑定表的问题?


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

主题:打开狐表项目的速度,以及动态生成表、动态绑定表的问题?

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/5 17:57:00 [显示全部帖子]

   今天出去了一天,回来后才发现这个贴竟然这么热。其实,我提狐表的缺点,但从来没有否定狐表的意思,我从来都是认为狐表是国产软件的骄傲!但优秀的软件不代表没有问题,现在既然出现了打开项目超慢的问题,我们应该共同分析,我作为狐表的用户肯定会认真的去分析、逐项排查,看究竟是哪些因素导致了打开项目过慢的问题;同时,也希望贺老师不要一口否定与狐表本身无关,完全是我自己设计不合理的问题。我认为我们应该共同分析问题所在,找出根本原因,以利于真正解决问题。
   由于项目中的表太多、事件代码太少,一来发上来会涉及到太多的商业机密,再者我估计贺老师也不一定有时间慢慢看完。所以,还是我慢慢查找原因吧,等我找到原因所在了,再发上来我们共同分析讨论!
  
[此贴子已经被作者于2009-9-5 17:58:04编辑过]

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/6 8:45:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-9-5 10:25:00的发言:


其实代码和窗口的多少是不会影响速度的,关键是设计合理否。

如果真的是这样,那我可要谢天谢地了!等我详细测试后再说吧!

[此贴子已经被作者于2009-9-6 9:07:49编辑过]

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/6 9:06:00 [显示全部帖子]

以下是引用cpayinyuan在2009-9-5 7:31:00的发言:

       按照贺老师的说法,“谁让你一次全部打开”,那我就请教一下贺老师,在SQLTable出现之前,如果在打开项目时不一次全部打开,怎么建立表的事件代码(我的大部分表中都有事件代码)?如果有办法,请贺老师不吝赐教!如果没有,在当时的版本中我在打开项目时一次打开也只能说是没有办法的办法!

       还是请贺老师正面回答我的上述问题吧.记得贺老师说过,狐表的重要特色就是表事件,所以,狐表中的大部分表都有表事件应该是天经地义的事情吧(大部分表都有DatacolChanged事件).
       如果现在的版本没有这项功能,建议给狐表增加用代码动态建立表事件的功能.如果这一点实现了,那么,我在打开项目时不加载任何表,把全部表都改用代码动态加载,就没有后顾之忧了.这个可能对以前的框架有所改变,这样改进后,不再是必须“找到表名——打开表属性——找到某个事件——编辑代码,而是可以在其他一个地方建立一段代码,并声明这段代码应用于哪个表的哪个事件中。
       另外,关于SqlTable中生成的表,输入框与字段的绑定问题,虽然贺老师已经告诉大家可以用代码把每个输入框与字段逐个绑定,但这样的工作量可不是闹着玩的.经过分析,目前存在的主要问题是: 现在的版本中,SQLTable生成的表只有在打开窗口的时候才存在,所以,设计输入框的时候就无法直接把输入框与字段绑定,在设计其他窗口的时候也无法引用这个表,很不方便.建议稍作改进如下:
      对于SQLTable生成的表,改为在建立窗口中的SqlTable控件时自动生成,这样,输入框即可很方便的与SQLTable生成的表的字段绑定,提高数倍的工作效率.同时,在设计其他窗口时也可以用代码任意引用SQLTable生成的表了.这样,使用SQLTable 也没有任何后顾之忧了.
     从理论上来讲,既然可以在窗口打开的时候动态生成表,那么在设计窗口的时候同样可以动态生成表,这样的改进就该是可以很轻松实现的. 但为了不影响效率并简化设计,对于SQLTable建立时自动生成表,作两条限制:
     (1)仅限于在设计窗口界面上SqlTable绑定的表,也就是在设计窗口的右侧填写的SQLTable生成时的select语句,不能应用于窗口执行过程中SQLTable用代码动态生成的表.
     (2)建立SQLTable生成的表不需要在界面上显示,仅应允许应用于两个地方:第一是任意窗口中的代码引用这个DataTable和Table;第二是输入框绑定表的界面中.

   

[此贴子已经被作者于2009-9-6 9:22:19编辑过]

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/6 9:19:00 [显示全部帖子]

     另外,我再提一个改进的思路,希望贺老师认真分析一下有无道理.

    记得贺老师以前说过,其他的开发工具都是设计有设计的环境和界面,运行有运行的运行环境和界面,而只是狐表是设计与运行的环境和界面是统一的.这样做的好处是比较方便,但同时也造成很多功能的设计需要同时兼顾设计和运行,所以造成许多功能改进不太方便,我估计同时也会造成效率的下降.因为在运行项目时也必须加载与设计相关的东西,在设计项目时也必须打开运行项目的各项资源.

    经过狐表认真分析,只有当"开发者"进入的时候,才能调出系统菜单,也就是才能对系统进行设计,而其他用户进入项目,是不可能进行设计的.换句话说,如果是其他人(非开发者)进入,所有的设计、开发功能都是没有意义的。但是,为了兼顾当时设计项目时的需要,在以后的若干年进入项目的时候都同时加载很多设计开发才可能用到的东西,我认为这是一种不必要的资源浪费。

     基于上述分析,建议改进如下:

    在进入项目的时候,如果是开发者进入,则同时加载狐表所有的内容、所有的功能、所有的控件(这和以前一样)。而入如果是其他人进入,则只加载运行用到的东西,对于开发用到的所有功能所有资源,都不再加载,这样,当交付给最终用户使用时,就是一个很简洁、打开很快、占用资源少、效率更高的系统。而对于开发者,加载了所有的东西,虽然效率差点、资源占用大点,但这也是必须的,不会影响到所有开发功能的使用。

    以上建议妥否,对提高效率是否具有很大的意义,望贺老师认真分析一下。

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/6 11:51:00 [显示全部帖子]

以下是引用blackzhu在2009-9-6 11:48:00的发言:

    我个人认为你这个用代码不久可以解决了吗?另外可以针对每一个用户制成相对应的客户端,因为有外部数据源嘛,每一个用户的客户端特制也没有问题啊,数据导入就可以了嘛!

   没这么简单,我们用代码只能控制不加载我们自己建立的东西,例如项目中的表、自建的窗口等,对于狐表本身而言,我估计也有许多与开发相关的东西可以不加载,这个有可能也会影响加载速度,而且这个只有贺老师才可以控制。
    具体是不是这样,那就只有贺老师来回答了。


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/7 8:54:00 [显示全部帖子]

请贺老师看62楼.

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/7 9:16:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-9-7 9:00:00的发言:


1、DataTable的Fill方法开通后,一个DataTable可以处理后台多个表
2、这样复杂的处理方式,还不如在全局事件中加入几个常用事件。

1、DataTable的Fill方法开通后,一个DataTable可以处理后台多个表。这样,是不是狐表中一个Table的   DataColchanged事件可以处理多个表?那么,这个表事件怎么判断当前处理的是后台的哪个表以执行相应的代码?即根据什么条件判断?(根据表名肯定是不可以了,因为表名都一样,只不过加载的后台数据不一样。)或者可以再延伸一点,是不是可以在狐表打开项目时只打开一个表(或少数几个表),并把所有表的DataColChanged事件写在这一个表的事件中,然后用这个DataTable不停的动态切换表?这样动态切换的确非常方便,但我还是很关心表事件是怎么处理的?
2、在全局事件中加入几个常用事件?不太明白。我的目的是在设计输入框绑定字段时,可以绑定窗口中动态生成的表(关闭窗口后界面中不存在这些表),这样用全局事件怎么实现?


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/7 9:52:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-9-7 9:25:00的发言:
1、可以增加一个全局变量,每次Fill之后将后台的实际表名写入这个全局变量。
2、参考:
http://www.foxtable.com/dispbbs.asp?boardid=2&Id=4211&page=2

    1、用全局变量可以获得后台的实际表名?帮助中只有如何获得DataTable的名,不记得哪儿说过怎么获得后台的实际表名?如果可以获得,那么这个问题就基本可以解决了。不过还是希望贺老师不要总保留那么多,把好东西尽快都告诉大家才对!
    2、关于输入框绑定字段的问题。贺老师让我看的贴子的解决办法是:
“在设计阶段用OuterTableBuilder生成表,然后在另一个永久性的表设计窗口,控件邦定到刚刚生成的表。”
    我认为这只能算一个变通的办法,在实际应用过程中多有不便。本来SQLTable就是要生成一个临时表,但目前的狐表中存在的问题是:这个临时表只在打开窗口中生成、在设计窗口时不生成。现在你让我再用OuterTableBuilder再生成一个临时表,同一个后台数据重复生成两个临时表,一个用来在窗口中显示并建立表事件,另一个用来绑定输入框,好像有点多此一举、同时又重复浪费资源!明明一步就可以解决问题的,为什么非要走一个曲线救国的道路?
    既然都是临时表,直接改进一下,让SQLTable的临时表不仅在打开窗口时自动生成,在设计窗口时也自动生成,这样岂不更省事省时又方便!可能我说起来比较复杂,但应用起来这样应该是最方便的!或者我理解有误?

   补充:希望贺老师先不要急着否决我的意见,建议认真分析一下究竟是否易于实现,以及改进后是否真的方便。

[此贴子已经被作者于2009-9-7 9:53:53编辑过]

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/7 10:52:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-9-7 10:03:00的发言:

1、代码是自己写的,每个Fill语句的时候,是从哪一个后台的表格中填充数据,自己轻轻楚楚,在Fill之前或之后将实际的表名写入全局变量即可。
2、SQLTable是动态的,不是设计的时候生成的,运行的过程中也是不断变化的。
3、开发就是开发,开发和应用完全不同的,没有100%自动的豆浆机,准备和清洗黄豆的工作始终是要做的。
4、谁说一个临时表要两个临时表对应啊,难道一个系统没有一个永久性的表格?

世界上哪有100%顺手的开发工具?不要讨论这个问题了,再讨论我真的崩溃了!
图片点击可在新窗口打开查看

[此贴子已经被作者于2009-9-7 10:13:04编辑过]



    1、关于Fill的问题,基本上明白了,谢谢贺老师的指导!
    2、关于2,SQLTable的表虽然可以动态生成,但在设计窗口界面可以有一个默认的生成表(在设计表窗口界面上,点击Table控件,在右侧的界面上有动态生成SQLTable的select 语句),这个语句是确定的,所以这个表也是确定的,也就是说每个SQLTable应该都有一个缺省的表。我的意思是在设计窗口的时候,自动生成这个表。至于在窗口打开之后用代码再重新加载生成的SQLTable,在设计窗口时是不确定的,当然不可能在设计窗口时自动生成。在打开设计窗口界面的时候,根据SQLTable自动生成一个表,不知道这样的设计究竟有什么难度?会导致贺老师要崩溃!
    3、关于贺老师后面的话,或许我作为普通用户没有资格去评论一个资深的软件专家,但这样的态度实在让人不敢恭维!但容我说一句不太中听的话,如果一年前贺老师就是这种态度,今天的狐表绝不可能发展到今天的这个样子!不过我无所谓,已经习惯了,一年之中有已经有几次我的贴子被锁贴,也多次遭到批评,但一年之中我的贴子究竟提了哪些问题,现在结果如何,大家心里都有数,贺老师心里有数!不管贺老师接受我的建议与否,或者像以前一样,现在不理解不支持,或者干脆把我的贴子锁了删了,我仍然会执著的学习狐表、分析狐表、继续向贺老师提建议!以后仍然会购买狐表!

    最后重复一下我的观点,以免新朋友误解我的意思。尽管我提的反对意见最多,但我始终认为狐表是一个非常优秀的软件,是国产软件的骄傲!我之所以鱼刺里挑骨头,是想让它更完美一些!


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/7 11:50:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-9-7 11:31:00的发言:

资源是有限的,不管是人还是企业,都应该有主攻方向,想着大而全往往就是失控甚至失败的开始。
完美也只是某个方面而言,否则在强大如Visual Studio的面前,Foxtable没有存在的价值。

……………………

[此贴子已经被作者于2009-9-7 11:35:46编辑过]

   现在贺老师太忙,用太多的时间回复我的贴子的确有些浪费时间,也不值得。  接受贺老师的建议,现在我就少说点。

   我知道我的一些贴子您没有认真看认真分析,我估计现在您的时间比较紧张,比较忙。所以,我深表理解。最后提一点:
    希望贺老师不忙的时候,或者编写代码空闲的时候,认真看一下我发的贴子,看一下我对狐表的分析,我的分析不一定对,但大部分并不是毫无道理的。

[此贴子已经被作者于2009-9-7 11:50:53编辑过]

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