以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 新版请教 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=82950) |
-- 作者:hbhb -- 发布时间:2016/3/28 19:29:00 -- 新版请教 大师:终于发现问题了,新版本打开老项目后,发现只要修改项目事件,如准备加载内部表时执行事件,重新打开项目后,有些表主键就没有了。为何?? |
-- 作者:大红袍 -- 发布时间:2016/3/28 19:54:00 -- 1、升级到最新版;
2、删除bin文件夹;
3、具体做例子发上来测试。 |
-- 作者:hbhb -- 发布时间:2016/3/28 20:14:00 -- 有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾。 ************** 异常文本 ************** System.NullReferenceException: 未将对象引用设置到对象的实例。 在 Foxtable.Col.get_AllowEdit() 在 Foxtable.oOO o .o_Oo_O__(Object A_0, RowColEventArgs A_1, RecordGrid A_2) 在 Foxtable.oOO o .o O O(Object A_0, RowColEventArgs A_1) 在 C1.Win.C1FlexGrid.C1FlexGridBase.OnBeforeEdit(RowColEventArgs e) 在 C1.Win.C1FlexGrid.C1FlexGridBase.#ndb(Int32 #j, Int32 #l) 在 C1.Win.C1FlexGrid.C1FlexGridBase.DrawCell(Graphics #AA, Int32 #j, Int32 #l, Style #aE, Rectangle #o5, String #gM, Image #Ak, CheckEnum #bdb) 在 C1.Win.C1FlexGrid.C1FlexGridBase.DrawCell(PaintEventArgs e, Int32 row, Int32 col) 在 C1.Win.C1FlexGrid.C1FlexGrid.DrawCell(PaintEventArgs e, Int32 row, Int32 col) 在 C1.Win.C1FlexGrid.C1FlexGrid.DrawRow(PaintEventArgs e, Int32 row) 在 C1.Win.C1FlexGrid.C1FlexGridBase.#adb(PaintEventArgs #tQ) 在 C1.Win.C1FlexGrid.C1FlexGridBase.OnPaint(PaintEventArgs e) 在 System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs) 在 System.Windows.Forms.Control.WmPaint(Message& m) 在 System.Windows.Forms.Control.WndProc(Message& m) 在 C1.Win.C1FlexGrid.Util.BaseControls.ScrollableControl.WndProc(Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
|
-- 作者:大红袍 -- 发布时间:2016/3/28 20:15:00 -- 上传实例。 |
-- 作者:hbhb -- 发布时间:2016/3/28 20:37:00 -- 请问:这是什么原因? 老版本在准备加载内部表时的执行事件中,有条件加载表的代码。在新版本中取消此事件的代码后,加载的表部分就没有主键了。
|
-- 作者:大红袍 -- 发布时间:2016/3/28 20:39:00 -- 贴出代码,最好上传项目。 |
-- 作者:hbhb -- 发布时间:2016/3/28 20:50:00 -- 老版本中BeforeLoadInnerTable的代码为: e.HideSplashForm = True If e.DataTableName = "表a" Or e.DataTableName = "jcsjdatatable" Or e.DataTableName = "任务主表" Then e.Cancel = False Else e.Cancel = True End If 计划中代码 If DataTables.Contains("zba") = False Then Functions.Execute("datatablesload","zba") End If If DataTables.Contains("zaa") = False Or DataTables.Contains("zab") = False Then DataTables.Load("zaa|zab") ‘---关联表 End If If DataTables.Contains("zac") = False Or DataTables.Contains("zad") = False Then DataTables.Load("zac|zad") End If If DataTables.Contains("dttzfl") = False Or DataTables.Contains("dttzflmxb") = False Then DataTables.Load("dttzfl|dttzflmxb") End If If DataTables.Contains("hbdttzfl") = False Or DataTables.Contains("hbdttzflmxb") = False Then DataTables.Load("hbdttzfl|hbdttzflmxb") End If Dim kz As String Dim bjh As new List(of String) bjh = DataTables("jcsjdatatable").GetValues("dstatablename","dstatablename is not null","_sortkey") ’---获取所有表的集合 For Each bj As String In bjh If bj <> "zab" And bj <> "zad" And bj <> "zaa" And bj <> "zac" And bj <> "zba" And bj <> "dttzfl" And bj <> "dttzflmxb" And bj <> "hbdttzfl" And bj <> "hbdttzflmxb" Then If DataTables.Contains(bj) = False Then Functions.Execute("datatablesload",bj) End If End If kz = bj Next If kz = bjh(bjh.Count - 1) Then MyTimers("loaddatatable").Enabled = False End If 在新版本中,删除计划中的代码,删除BeforeLoadInnerTable中的代码。 请问某些表主键就没有了。 老版本就没有问题????? |
-- 作者:大红袍 -- 发布时间:2016/3/28 20:53:00 -- 你把计划任务里面的代码去掉呢?特别是和 jcsjdatatable 相关的。
你能不能做个具体的例子发上来。 |
-- 作者:hbhb -- 发布时间:2016/3/28 20:54:00 -- 新版本如果不改动,运行就没有问题。老版本改动与不改动都没有问题?究竟为何? |
-- 作者:大红袍 -- 发布时间:2016/3/28 20:56:00 -- 看8楼。 |