以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  提示定义的字段太多  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=135437)

--  作者:fntfgz
--  发布时间:2019/5/26 22:08:00
--  提示定义的字段太多

直接上项目

 

里面有一个表,字段确实比较多,但是没有备注型的,打开修改保存没有问题,里面有很多数字型为0的单元格,我用代码都把他们变为空值,删除0之后,再保存就提示“字段过多了”

 

For Each dr As DataRow In DataTables("yxlist").DataRows
For Each dc As DataCol In DataTables("yxlist").DataCols
If dc.IsNumeric Then
If dr(dc.Name) =0 Then
dr(dc.name)=Nothing
End If
End If
Next
Next

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar

[此贴子已经被作者于2019/5/26 22:09:56编辑过]

--  作者:y2287958
--  发布时间:2019/5/27 8:47:00
--  
我这测试未出现提示
--  作者:有点甜
--  发布时间:2019/5/27 9:22:00
--  

需要变通处理

 

For Each dr As DataRow In DataTables("yxlist").DataRows
    Dim idx As Integer = 0
    For Each dc As DataCol In DataTables("yxlist").DataCols
        If dc.IsNumeric Then
            If dr(dc.Name) =0 Then
                dr(dc.name)=Nothing
            End If
        End If
        idx += 1
        If idx Mod 50 = 1 Then
            dr.save
        End If
    Next
    dr.save
Next

 

因为你某一行要保存的数据量太多,就会报这个错


--  作者:有点甜
--  发布时间:2019/5/27 9:34:00
--  

改进一下代码

 

Dim i = 0
For Each dr As DataRow In DataTables("yxlist").DataRows
    i += 1
    Dim idx As Integer = 1
    For Each dc As DataCol In DataTables("yxlist").DataCols
        If dc.IsNumeric Then
            If dr(dc.Name) =0 Then
                dr(dc.name)=Nothing
                idx += 1
            End If
        End If
        If idx Mod 100 = 0 Then
            dr.save
        End If
    Next
    output.show(i)
    \'dr.save
Next
DataTables("yxlist").save