以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]动态加载表格控件时,为什么会报“表无_identify列“?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=62080)

--  作者:whyfoxtable
--  发布时间:2014/12/25 9:14:00
--  [求助]动态加载表格控件时,为什么会报“表无_identify列“?
报错描述:
做简单的对照事例时,有弄不清故障出处:
具体是:
1.发现在“窗口1”中用代码加TabContro控件,然后在子页上加Table控件,最后加载“表C”,运行无错误(在窗体1中的AfterLoad事件中加代码 )
2.而在自己编写的项目中,用同样思路来加载表C,却报”表C不存在名为“_Identify"的列!


窗口表事件

 

窗口与控件事件

 

窗口1_AfterLoad

 

Dim tcl As WinForm.TabControl

tcl = e.Form.CreateControl("TabControl1",ControlTypeEnum.TabControl)

tcl.Dock = 5

tcl.TabPages.Add("Page1","试验")

Forms("窗口1").AddControl(tcl)

 

 

 

Dim tbl As WinForm.Table

tbl = e.Form.CreateTable("Table1", "表C",True )

tbl.Dock = 5

Forms("窗口1").Controls("TabControl1").TabPages("Page1").AddControl(tbl)

 

 


--  作者:Bin
--  发布时间:2014/12/25 9:20:00
--  
表C 没有_Identify列导致的吧,你检查一下.
--  作者:whyfoxtable
--  发布时间:2014/12/25 9:41:00
--  [求助]动态加载表格控件时,为什么会报“表无_identify列“?
表C确实有_Identify列,我通过复制表的对话框能看到有。

下面我再重新描述一遍。
报错描述:
做简单的对照事例时,有弄不清故障出处:
具体是:
1.发现在“窗口1”中用代码加TabContro控件,然后在子页上加Table控件,最后加载“表C”,运行无错误(在窗体1中的AfterLoad事件中加代码 )
2.而在自己编写的项目中,用同样思路来加载表C,却报”表C不存在名为“_Identify"的列!

1.无报错的简化标准代码

窗口表事件

 

窗口与控件事件

 

窗口1_AfterLoad

 

Dim tcl As WinForm.TabControl

tcl = e.Form.CreateControl("TabControl1",ControlTypeEnum.TabControl)

tcl.Dock = 5

tcl.TabPages.Add("Page1","试验")

Forms("窗口1").AddControl(tcl)

 

 

 

Dim tbl As WinForm.Table

tbl = e.Form.CreateTable("Table1", "表C",True )

tbl.Dock = 5

Forms("窗口1").Controls("TabControl1").TabPages("Page1").AddControl(tbl)


2.有报错的工程代码

Dim EndTab As  WinForm.Table


For Each TopPg In TopGroup.TabPages

LevSecTab = e.Form.CreateControl("LevSec" & TopPg.Name ,ControlTypeEnum.TabControl )


    For Each drSec As DataRow In DtRep.Select(ReSysFilter & " And " & TaCoFilter  & " And ReportGroupCode = \'" &TopPg.Name & "\'","ReportGroupCode")

        LevSecTab.TabPages.Add(drSec("ReportCode"),drSec("ReportCode") & "|" & drSec("ReportName"))

            If drSec("ReportCode") = "Z1" Then

            EndTab = e.Form.CreateTable(drSec("ReportCode") & "Tab" ,"表C",True )

            EndTab.Dock = 5

            EndTab.ShowCheckBox = False

            LevSecTab.TabPages(drSec("ReportCode")).AddControl(EndTab)

            End If

    Next


LevSecTab.Dock = 5

TopPg.AddControl(LevSecTab)

Next 



疑问:

  EndTab = e.Form.CreateTable(drSec("ReportCode") & "Tab" ,"表C",True ) 中的True改为false时不报错.

我已经把问题简化求证,但还没查出错误点.


求助:请费心看一下我的工程代码,看问题出在哪?(工程代码在"录入主窗口"的AfterLoad事件中。

工程文件我随后上传

出故障时的图片,我也随后上传。

故障点在我点多页控件时,点z1的那个页,报错的。


[此贴子已经被作者于2014-12-25 10:57:18编辑过]

--  作者:whyfoxtable
--  发布时间:2014/12/25 9:43:00
--  [求助]附报错图片
图片点击可在新窗口打开查看为什么插入不了图片,为什么不能上传附件。。。
[此贴子已经被作者于2014-12-25 9:46:07编辑过]

--  作者:Bin
--  发布时间:2014/12/25 9:46:00
--  
能不能做个简单例子.
--  作者:whyfoxtable
--  发布时间:2014/12/25 9:50:00
--  
图片点击可在新窗口打开查看
--  作者:whyfoxtable
--  发布时间:2014/12/25 9:52:00
--  [求助]我把工程文件再处理处理。。。。

我再处理处理,就怕处理之后错误就没了。。。。


--  作者:whyfoxtable
--  发布时间:2014/12/25 10:05:00
--  [求助]不动表格,只把工程中有关窗体删除,新加窗体和代码,不报错。说明是窗体问题,不是基础表有问题。
不动表格,只把工程中有关窗体删除,新加窗体和代码,不报错。说明是窗体问题,不是基础表有问题。表C没问题。。。。我再接着查窗体代码有什么问题。。。。
--  作者:whyfoxtable
--  发布时间:2014/12/25 10:55:00
--  [分享]窗口中多层动态添加控件,要有顺序,否则出莫名其妙的错。

找到了。。。。做个简单例子。。。。我不断精简无关代码。。。。发现,窗口中多层动态添加控件,要有顺序,否则出错。即顶层控件没添加,里面一层控件添加到顶层控件,最后再添加顶层控件,就会出现我的莫名其妙的情况。

 

1.正确代码顺序

Dim TBC As  WinForm.TabControl
Dim TB As  WinForm.Table
TBC = e.Form.CreateControl("LevSecName" ,ControlTypeEnum.TabControl )
TBC.TabPages.Add("test","test")

TBC.Dock = 5
e.Form.AddControl(TBC)

 

TB = e.Form.CreateTable( "Tab1" ,"表C",True )
TB.Dock = 5
TBC.TabPages("test").AddControl(TB)

 

2.错误的代码顺序

Dim TBC As  WinForm.TabControl
Dim TB As  WinForm.Table
TBC = e.Form.CreateControl("LevSecName" ,ControlTypeEnum.TabControl )
TBC.TabPages.Add("test","test")

 

TB = e.Form.CreateTable( "Tab1" ,"表C",True )
TB.Dock = 5
TBC.TabPages("test").AddControl(TB)

 

TBC.Dock = 5
e.Form.AddControl(TBC)