以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  新版发布项目更新时出错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=178421)

--  作者:happyft
--  发布时间:2022/7/4 8:51:00
--  新版发布项目更新时出错

图片点击可在新窗口打开查看此主题相关图片如下:运行错误.png
图片点击可在新窗口打开查看

项目什么都没有改动,只是想最新的6.29版本稳定了更新到最新,结果更新完成再次打开项目时出错,请问是什么原因?
谢谢!

--  作者:有点蓝
--  发布时间:2022/7/4 9:18:00
--  
关闭退出项目,删除项目所在的文件夹里的bin目录,然后重启项目试试。

是不是换了安装路径,第三方的dll有没有复制到安装目录?

--  作者:HappyFt
--  发布时间:2022/7/4 10:07:00
--  
删除重新发布更新还是一样,更新到7.3版本也是一样,安装路径没有改变过,也没用第三方的dll,要如何查看那个LoaderException选项?
--  作者:有点蓝
--  发布时间:2022/7/4 10:16:00
--  
调试看哪一句代码出错
--  作者:HappyFt
--  发布时间:2022/7/7 15:14:00
--  
今天又升级另外一个项目,升级后同样出错,问题是在创建一个临时表时出错了
Dim dtb As New DataTableBuilder("TabFid")
        dtb.AddDef("wn", Gettype(String),20) \'窗口名
        dtb.AddDef("Mtb", Gettype(String),32) \'主表名
....
        dtb.AddDef("BUflt", GetType(String), 400) \'事业部条件
        dtb.AddDef("outflt", Gettype(String),800) \'where 条件
        dtb.AddDef("ReferCols", GetType(String), 100) \'引用关联表中的其他列(包括表名关联列)
        dtb.AddDef("fltbyBU", GetType(Boolean)) \'按事业部查看数据
        dtb.Build()
End If

运行到上面红色那句出的错,应该是新版设置字符列不能超过某个值,原来所有项目都没有这个问题


--  作者:有点蓝
--  发布时间:2022/7/7 15:23:00
--  
AfterOpenProject事件添加下面代码,发布后测试没有问题

Dim dtb As New DataTableBuilder("TabFid")
dtb.AddDef("wn", GetType(String), 20) \'窗口名
dtb.AddDef("Mtb", GetType(String), 32) \'主表名
dtb.AddDef("BUflt", GetType(String), 400) \'事业部条件
dtb.AddDef("outflt", GetType(String), 800) \'where 条件
dtb.AddDef("ReferCols", GetType(String), 100) \'引用关联表中的其他列(包括表名关联列)
dtb.AddDef("fltbyBU", GetType(Boolean)) \'按事业部查看数据
dtb.Build()

或者完整代码发上来试试

--  作者:HappyFt
--  发布时间:2022/7/7 16:22:00
--  
    If DataTables.Contains("TabFid") = False Then \'增加判断防止每次编辑项目属性后窗口就从临时表消失
        Dim dtb As New DataTableBuilder("TabFid")
        dtb.AddDef("wn", Gettype(String),20) \'窗口名
        dtb.AddDef("Mtb", Gettype(String),32) \'主表名
        dtb.AddDef("Curtb", Gettype(String),32) \'窗口中的当前活动表名,即Currenttable.Name
        dtb.AddDef("winlb", Gettype(String),8) \'窗口类别
        dtb.AddDef("Fid", Gettype(Byte)) \'流程号
        dtb.AddDef("Idcol", Gettype(String),10) \'单据识别列
        dtb.AddDef("Rcol", Gettype(String),10) \'关联列
        dtb.AddDef("LoadFs", Gettype(Integer)) \'加载方式 0按默认加载,1为用户自定义加载,,2为通过加载树加载
        dtb.AddDef("CanAddnew", GetType(Boolean)) \'可新增
        dtb.AddDef("CanMD", Gettype(Boolean)) \'可修改
        dtb.AddDef("CanCK", GetType(Boolean)) \'可查阅报表
        dtb.AddDef("CanOver", Gettype(Boolean)) \'可结案
        dtb.AddDef("CanPrt", Gettype(Boolean)) \'可打印
        dtb.AddDef("CanExp", Gettype(Boolean)) \'可导出
        dtb.AddDef("CanImport", Gettype(Boolean)) \'可导出
        dtb.AddDef("CanReset", Gettype(Boolean)) \'可重置
        dtb.AddDef("ShowTree", Gettype(Boolean)) \'显示加载筛选目录树
        dtb.AddDef("pg", Gettype(Integer)) \'当前页
        dtb.AddDef("pgs", Gettype(Integer)) \'总页数
        dtb.AddDef("RowsPage", Gettype(Integer)) \'每页加载行数
        dtb.AddDef("RowsTotal", Gettype(Integer)) \'总行数
        dtb.AddDef("trRows", Gettype(Integer)) \'每页加载树行数
        dtb.AddDef("trPage", Gettype(Integer)) \'当前加载树页数
        dtb.AddDef("ldRange", GetType(String), 16) \'查阅范围
        dtb.AddDef("Isrange", Gettype(Boolean)) \'是否设置了查阅范围
        dtb.AddDef("IsdynamicTr", GetType(Boolean)) \'目录树是否根据条件生成
        dtb.AddDef("sortCol", Gettype(String),32) \'排序列
        dtb.AddDef("trcol", Gettype(String),32) \'加载树列
        dtb.AddDef("trcolNull", Gettype(String),400) \'加上null判断的目录树列
        dtb.AddDef("sqlcol", Gettype(String),200) \'需要从sql数据库中提取的目录树列
        dtb.AddDef("ldTreeSort", Gettype(String),32) \'加载目录树排序列
        dtb.AddDef("loadorder", GetType(String), 8) \'是否降序加载
        dtb.AddDef("ldpagecol", Gettype(String),16) \'加载分页依据列
        dtb.AddDef("supplierCol", GetType(String), 16) \'供应商识别列
        dtb.AddDef("cyfwflt", GetType(String), 400) \'查阅范围条件
        dtb.AddDef("BUflt", GetType(String), 400) \'事业部条件
    MessageBox.Show(1) 
        dtb.AddDef("outflt", GetType(String), 800) \'where 条件
    MessageBox.Show(2) 
        dtb.AddDef("ReferCols", GetType(String), 100) \'引用关联表中的其他列(包括表名关联列)
    MessageBox.Show(3) 
        dtb.AddDef("fltbyBU", GetType(Boolean)) \'按事业部查看数据
    MessageBox.Show(4) 
        dtb.Build()
    MessageBox.Show(5) 
    End If
    \'--------------------------------生成{TabFid}临时表------------------------------

    winN_dtb = DataTables("MoGroup").GetValues("WinName", "winlb <> \'Query\' and xs = true") \'集合所有非查询窗口名称
    winN_qtb = DataTables("MoGroup").GetValues("WinName", "winlb = \'Query\' and xs = true") \'集合所有查询窗口名称
    
    Tables("QtbSet").Cols("Key").Move(2)  \'将列移动到某位置
    Tables("MoGroup").Cols("Key").Move(3)  \'将列移动到某位置
    
    \'设置一些全局变量的初始值
    chk_Multi = False  \'多选开关
    chk_Sum = False  \'显示合计
    chk_ListMode  = False  \'突出显示行
    Vars("users") = 100  \'设置允许使用的用户数量
    
  
    Forms("导航").Open()

每一句都加MessageBox.Show,弹出4后就出现错误了,也就运行红色dtb.Build()时出错了,临时表生成会触发什么相关的事件?可能是其他关联地方出错了
出错那个提示LoaderException是什么的属性? 
单独新建一个项目运行这些代码又不会出错,现在都不知道从哪里检查问题了,



--  作者:有点蓝
--  发布时间:2022/7/7 16:29:00
--  
检查一下项目属性其它事件,比如currenttablechanged,maintablechanged等
[此贴子已经被作者于2022/7/7 16:30:11编辑过]

--  作者:HappyFt
--  发布时间:2022/7/7 16:38:00
--  
有个特点就是在开发版直接运行项目不会出问题,发布后的项目运行才会出错
--  作者:有点蓝
--  发布时间:2022/7/7 16:52:00
--  
把AfterOpenProject之外所有项目事件都屏蔽掉,发布测试有没有问题