Foxtable(狐表)用户栏目专家坐堂 → 旧文件用新版打开后出现的问题


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

主题:旧文件用新版打开后出现的问题

帅哥,在线噢!
y2287958
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4759 积分:34603 威望:0 精华:0 注册:2008/8/31 22:44:00
旧文件用新版打开后出现的问题  发帖心情 Post By:2019/5/31 17:34:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:新版测试.table

 

附件打开后出现以下提示:

---------------------------
提示
---------------------------
找不到自定义函数"DrawCell"!
---------------------------
确定  
---------------------------

 

用旧版可以正常打开使用,如何解决这个问题?因为我之前的项目大量采用这个方式,一直都是非常正常好用的,谢谢版主。


[此贴子已经被作者于2019/6/1 8:01:11编辑过]

 回到顶部
帅哥,在线噢!
y2287958
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4759 积分:34603 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/5/31 18:56:00 [显示全部帖子]


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

已经升级到最新版,仍然出现提示且无法关闭项目,最后只能强制退出。


 回到顶部
帅哥,在线噢!
y2287958
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4759 积分:34603 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/5/31 23:14:00 [显示全部帖子]

版主,费心了。

用了以上代码仍然如此啊,再费点心看看呗


 回到顶部
帅哥,在线噢!
y2287958
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4759 积分:34603 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/5/31 23:52:00 [显示全部帖子]

谢谢版主有心,问题仍然存在。经深入测试,有以下情况:

表事件DrawCell有代码的情况下,如果表事件PrepareEdit也有代码便出现以上情况,其他则正常。

劳烦版主有空再帮帮忙,一方面解决一下问题,另一方面可以涨涨知识。


 回到顶部
帅哥,在线噢!
y2287958
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4759 积分:34603 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/6/1 7:09:00 [显示全部帖子]

删除Bin后,有时可以,尔后多打开几次后便又反复出现,不知道什么原因造成。
[此贴子已经被作者于2019/6/1 7:33:14编辑过]

 回到顶部
帅哥,在线噢!
y2287958
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4759 积分:34603 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/6/5 8:21:00 [显示全部帖子]

以下是引用有点甜在2019/6/4 17:28:00的发言:

试试这样

 

'''
Dim e As Object = Args(0)
Dim 函数名称 As String = Args(1)

If 函数集.Contains(函数名称)
    try
        Functions.Execute(函数名称, e)
    catch ex As exception
        函数集.Remove(函数名称)
    End try
Else
    Dim dr As DataRow = DataTables("表A").Find("第一列 = '" & 函数名称 & "' and 第二列 is not null and 第二列 <> ''")
    If dr IsNot Nothing
        try
            函数集.Remove(函数名称)
            Functions.Remove(函数名称)
            Functions.Add(dr("第一列"), dr("第二列"))
            Functions.complie()
            函数集.Add(函数名称)
            Functions.Execute(函数名称, e)
        catch ex As exception
            函数集.Remove(函数名称)
        End try
    End If
End If

依然如此,用不了新版,请帮忙。

[此贴子已经被作者于2019/6/5 8:22:20编辑过]

 回到顶部
帅哥,在线噢!
y2287958
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4759 积分:34603 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/6/6 12:31:00 [显示全部帖子]

以下是引用有点蓝在2019/6/5 14:24:00的发言:
开发那边测试了一下,回复说建议在打开项目之后一次性编译所有的函数,可以避免问题,性能也更好。
Functions.Add("Sum",Code)
Functions.Add("Sum2",Code2)
Functions.Complie()

因为假定100个函数,原来方式要编译100次,而一次性编译只需编译一次。

再次,4.0的编译器和2.0确实是有差异了,prepareedit和drawcell事件执行的频繁,事件触发的动态编译会产生冲突。

或者可以考虑把常用的函数在项目启动后一次性编译出来,不常用的还是继续用到的时候再编译

明白了,思路很好,可以用新版了。

谢谢foxtable,产品与服务都是一流的,老用户的心声!


 回到顶部