Foxtable(狐表)用户栏目专家坐堂 → 用代码生成数据表后出现错误,并且菜单为灰色,不能用,为什么


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

主题:用代码生成数据表后出现错误,并且菜单为灰色,不能用,为什么

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


加好友 发短信
等级:小狐 帖子:381 积分:2937 威望:0 精华:0 注册:2015/5/15 20:56:00
用代码生成数据表后出现错误,并且菜单为灰色,不能用,为什么  发帖心情 Post By:2020/1/21 17:09:00 [只看该作者]

在开发的并发布的程序中,用代码生成数据表后出现错误,并且菜单为灰色,不能用,为什么
[此贴子已经被作者于2020/1/21 17:10:47编辑过]

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/21 17:14:00 [只看该作者]

出现什么错误?使用了什么代码?

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


加好友 发短信
等级:小狐 帖子:381 积分:2937 威望:0 精华:0 注册:2015/5/15 20:56:00
  发帖心情 Post By:2020/1/21 17:16:00 [只看该作者]

这是错误信息

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


加好友 发短信
等级:小狐 帖子:381 积分:2937 威望:0 精华:0 注册:2015/5/15 20:56:00
  发帖心情 Post By:2020/1/21 17:18:00 [只看该作者]

要求退回或继续,如果继续,同时非字符型字段丢失,不显示了,再等会,就会出现菜单灰色,不能操作

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


加好友 发短信
等级:小狐 帖子:381 积分:2937 威望:0 精华:0 注册:2015/5/15 20:56:00
  发帖心情 Post By:2020/1/21 17:19:00 [只看该作者]

用的帮助文件 中的生成表的代码,如下
Dim tx1 As WinForm.TextBox = e.Form.Controls("TextBox1")
If tx1.Value="" Then tx1.Value="表" & Tables.Count
Dim adb As new ADOXBuilder
Dim tbl As ADOXTable
adb.Open()
tbl = adb.NewTable(tx1.Value) '创建表
With tbl
    For Each r As Row In Tables("增加表_Table1").Rows
        If r.IsNull("列名")=False Then
            Select Case r("类型")
                Case "字符"
                    .AddColumn(r("列名"),ADOXType.String,r("长度"))
                Case "日期时间型"
                    .AddColumn(r("列名"),ADOXType.DateTime)
                Case "逻辑型"
                    .AddColumn(r("列名"),ADOXType.Boolean)
                Case "备注型"
                    .AddColumn(r("列名"),ADOXType.Text)
                Case "整数型"
                    .AddColumn(r("列名"),ADOXType.Integer)
                Case "长整数型"
                    .AddColumn(r("列名"),ADOXType.Long)
                   
                Case "短整数型"
                    .AddColumn(r("列名"),ADOXType.Short)
                Case "微整数型"
                    .AddColumn(r("列名"),ADOXType.Byte)
                Case "双精度小数型"
                    .AddColumn(r("列名"),ADOXType.Double )
                Case "单精度小数型"
                    .AddColumn(r("列名"),ADOXType.Single)
                Case "高精度小数型"
                    .AddColumn(r("列名"),ADOXType.Decimal)
            End Select
        End If
    Next
   
End With
adb.AddTable(tbl)
adb.Close()
If e.Form.Controls("CheckBox1").checked=True Then
    Syscmd.Project.Open(ProjectFile)
End If

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


加好友 发短信
等级:小狐 帖子:381 积分:2937 威望:0 精华:0 注册:2015/5/15 20:56:00
  发帖心情 Post By:2020/1/21 17:20:00 [只看该作者]

我用窗口,录入字段的信息,名称、标题和数据类型


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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/21 17:27:00 [只看该作者]

Tables("增加表_Table1")这个表结构和数据发上来测试一下

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


加好友 发短信
等级:小狐 帖子:381 积分:2937 威望:0 精华:0 注册:2015/5/15 20:56:00
这是表在窗口中生成的代码  发帖心情 Post By:2020/1/22 14:39:00 [只看该作者]

Dim b As New DataTableBuilder("NewTable")   ',临时表
With b
    .AddDef ("列名" ,Gettype(String),20)
    .AddDef("类型" ,Gettype(String), 12)
    .AddDef("长度" ,Gettype(Integer ))
    .AddDef("标题" ,Gettype(String),50)
End With
b.Build()
Tables("增加表_Table1").DataSource =b.BuildDataSource    'DataTables("NewTable")
Dim tb As Table = Tables("增加表_Table1")
Dim ri() As String ={ "第一列","第二列","第三列" ,"第四列","第五列","第六列","第七列","第八列","第九列", "第十列" }
With tb 
    For i As Integer =0 To 9
        .AddNew()
        .Current("列名")=ri(i)
        .Current("类型")="字符"
        .Current("长度")=16
   Next  
    .RowHeaderVisible = False
    .AllowEdit=True
    .Cols("类型").ComboList=DataTables("sys_DataType").GetComboListString("DataCaption","","_Identify")  
End With

'//** 在<增加数据表> @cb-选择数据源 显示已有数据源
Dim cb As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim dts As String ="内部数据源"
For Each cn As Connection In Connections
    dts=dts & "|" & cn.Name
Next
If dts <> Nothing Then
    cb.ComboList=dts
End If
cb.Value="内部数据源"

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/22 14:55:00 [只看该作者]

1、首先
Dim b As New DataTableBuilder("NewTable")   ',临时表
With b
    .AddDef ("列名" ,Gettype(String),20)
    .AddDef("类型" ,Gettype(String), 12)
    .AddDef("长度" ,Gettype(Integer ))
    .AddDef("标题" ,Gettype(String),50)
End With
‘’b.Build() 这句代码要去掉,否则会导致临时表异常,因为后面重复BuildDataSource  生成了
Tables("增加表_Table1").DataSource =b.BuildDataSource    'DataTables("NewTable")

2、这个增加表窗口不能是模式窗口,模式窗口里不能使用Syscmd.Project.Open(ProjectFile)

如果是其它类型窗口加一句代码
If e.Form.Controls("CheckBox1").checked=True Then
   e.cancel=true
    Syscmd.Project.Open(ProjectFile)
End If

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


加好友 发短信
等级:小狐 帖子:381 积分:2937 威望:0 精华:0 注册:2015/5/15 20:56:00
谢谢有点蓝老师,我试试  发帖心情 Post By:2020/1/23 9:18:00 [只看该作者]

谢谢有点蓝老师,我试试

 回到顶部