以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  增加列时总是出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=178427)

--  作者:zhuxinhui
--  发布时间:2022/7/4 11:43:00
--  增加列时总是出错
增加列时总是出错,查过半天都查不出哪出问题了
‘’‘’‘’‘’是内部数据源,根据表数据进行增加列
Dim uu As Table = Tables("表列名")
For i As Integer = 0 To uu.Rows.count - 1 
    Dim nn As String = uu.Rows(i)("列名")
    Dim nn1 As String = uu.Rows(i)("表名")
    Dim nn2  = uu.Rows(i)("长度")
    Dim Builder As New ADOXBuilder  ‘’‘’‘’‘’是内部数据源
    Builder.Open()
    If uu.Rows(i)("类型") = "String" Then
        With Builder.Tables(nn1)
            .AddColumn(nn , ADOXType.string, 50)
        End With
        MessageBox.Show(1)
    Else If uu.Rows(i)("类型") = "DateTime" Then
    With Builder.Tables(nn1)
        .AddColumn(nn , ADOXType.DateTime)
    End With
    MessageBox.Show(2)
    Else If uu.Rows(i)("类型") = "Double" Then
    With Builder.Tables(nn1)
        .AddColumn(nn , ADOXType.Double)
    End With
    MessageBox.Show(3)
    Else If uu.Rows(i)("类型") = "Text" Then
    With Builder.Tables(nn1)
        .AddColumn(nn , ADOXType.Text)
    End With
    MessageBox.Show(4)
    Else If uu.Rows(i)("类型") = "Boolean" Then
    With Builder.Tables(nn1)
        .AddColumn(nn , ADOXType.Boolean)
    End With 
    MessageBox.Show(6)
    Else If uu.Rows(i)("类型") = "" And uu.Rows(i)("是否文本") = True Then
    With Builder.Tables(nn1)
        .AddColumn(nn , ADOXType.String, 50)
    End With
    MessageBox.Show(7)
    Else If uu.Rows(i)("类型") = "" And uu.Rows(i)("是否文本") = False Then
        With Builder.Tables(nn1)
            .AddColumn(nn , ADOXType.Double)
        End With
    End If
Next

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


--  作者:有点蓝
--  发布时间:2022/7/4 11:56:00
--  
可能出错原因:
1、已经有同名的列了
2、不存在指定名称的表

最后代码执行后必须重启项目才能正常使用

--  作者:zhuxinhui
--  发布时间:2022/7/4 11:59:00
--  
可能出错原因:
1、已经有同名的列了
2、不存在指定名称的表

最后代码执行后必须重启项目才能正常使用
这三项都已检查过,没有问题

--  作者:zhuxinhui
--  发布时间:2022/7/4 12:01:00
--  
他是内部表,应该每个表所有的列都显示出来
同名的列也进行了判别后,再加载的
项目进行了过多次重启

--  作者:有点蓝
--  发布时间:2022/7/4 12:07:00
--  
调试是那一句代码出错
--  作者:zhuxinhui
--  发布时间:2022/7/4 13:54:00
--  
检查了很久,查不出来
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:销售采购开单.zip


--  作者:有点蓝
--  发布时间:2022/7/4 14:02:00
--  
怎么测试?我看了几个表,列都已经存在了
--  作者:zhuxinhui
--  发布时间:2022/7/4 14:21:00
--  
用户这个表没有


--  作者:zhuxinhui
--  发布时间:2022/7/4 14:23:00
--  
这些都是没有的
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20220704142206.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2022/7/4 14:30:00
--  
首先您的代码是遍历添加所有的表的。


DataTables("表列名").Save()
DataTables("表列名").LoadFilter = "是否增加 is null and 表名=‘用户表’" 这里是不是应该加上表名做条件,否则加载的是所有的表
DataTables("表列名").Load()

Dim uu As Table = Tables("表列名")
For i As Integer = 0 To uu.Rows.count - 1 遍历的是所有的表

其次用户表已经有ID和名称2个列了,但是"表列名"里名称是否增加列是空的,数据有问题

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