Foxtable(狐表)用户栏目专家坐堂 → [讨论]动态加载临时列的代码优化


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

主题:[讨论]动态加载临时列的代码优化

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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
[讨论]动态加载临时列的代码优化  发帖心情 Post By:2013/9/25 21:16:00 [只看该作者]

各位狐友,我设计了一个动态加载临时列的方案,以实现在单据录入的时候能动态加载关联数据,如下图

图片点击可在新窗口打开查看此主题相关图片如下:qq截图201309252112051111.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130925211222.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130925211240333.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/25 21:23:00 [只看该作者]

接楼上
通过代码,在窗口中实现以下效果

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130925211332444.png
图片点击可在新窗口打开查看
可以通过在取数函数表中设置字符串,在订单录入窗口中关联显示产品名称、规格等数据,而不必在订单表中增加相应字段。这里感谢狐友有点甜的帮助

但是目前这个方案还有不足之处,由于使用了动态自定义函数,运行速度较慢,不知道有没有优化的方法以提高运行速度?

项目文件如下,为了测试方便,已经改成了内部数据源
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.table



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


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

 需要优化什么?

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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/25 21:27:00 [只看该作者]

当我更改窗口中的产品编号时,虽然其产品名称、规格、颜色等字段能相应变化,但响应速度较慢

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


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

 如果取数的条件是动态的,就只能是用动态编译的方法。

 如果是固定某个规律,而且不再变法的,就可以把代码写死,从而提高效率。

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


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

以下是引用kensou11111在2013-9-25 21:27:00的发言:
当我更改窗口中的产品编号时,虽然其产品名称、规格、颜色等字段能相应变化,但响应速度较慢


为什么不直接把取数的条件直接写在代码那里,而不是动态获取值再填入?

[此贴子已经被作者于2013-9-25 21:32:24编辑过]

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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/25 22:59:00 [只看该作者]

因为这样就可以在发布项目之后,不需要更改源代码,直接在取数函数表中设置参数,就可以达到管理动态加载列的效果。

如果直接把取数的条件直接写在代码那里,那如果我以后要在订单录入窗口增加一列 品牌、比重、产品英文名等等的时候,就需要修改源代码

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


加好友 发短信
等级:版主 帖子:1693 积分:12117 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2013/9/26 7:46:00 [只看该作者]

以下是引用kensou11111在2013-9-25 21:16:00的发言:
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130925211240333.png
图片点击可在新窗口打开查看

你还可以换种思路,

 

第一种:增加一列函数名,启动相应模块时一次性编译加载,避免每次的重复编译。

 

第二种:将你的取数表达式列分为三列:条件字段(产品编号)、取数表(窗口1_table1)、取数字段(产品编号)

     这样就可以传参调用固定函数。


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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/27 11:28:00 [只看该作者]

以下是引用逛逛在2013-9-26 7:46:00的发言:

你还可以换种思路,

 

第一种:增加一列函数名,启动相应模块时一次性编译加载,避免每次的重复编译。

 

第二种:将你的取数表达式列分为三列:条件字段(产品编号)、取数表(窗口1_table1)、取数字段(产品编号)

     这样就可以传参调用固定函数。

第一种方式如何实现?

 

第二种方式,即使将取数表达式列分为3列,在合成COMMANDTEXT时,还是需要使用动态自定义函数,无法回避这个问题啊


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


加好友 发短信
等级:版主 帖子:1693 积分:12117 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2013/9/27 12:21:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:未命名.bmp
图片点击可在新窗口打开查看

 

第一种,你就增函数名列,在需要的时候用循环,一次性全部生成,后面就按函数名调用,修改的时候重新编译。

 

第二种方法你增加后面三列,用命令检验以下代码,可行就自行改写成函数调用。

 

    Dim r = Tables("取数函数表").Current
        Dim ld As String
        Dim sql As String = "Select  " & r("增加列名称") & "  From {"  & r("表名")  & "} "
        sql +=  " Where "  &  r("条件字段") &  " ='"  & Tables(r("取数表")).Current(r("取数字段")) & "'"
        Dim cmd As New SQLCommand 
        cmd.CommandText = sql
        ld = cmd.ExecuteScalar()
Output.SHOW(LD)


 回到顶部