Foxtable(狐表)用户栏目专家坐堂 → [求助]代码运行出错(已解决)


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

主题:[求助]代码运行出错(已解决)

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]代码运行出错(已解决)  发帖心情 Post By:2015/4/16 14:23:00 [只看该作者]

一段代码,用来填充班组工位的数据,清除班组工位表后,运行填充代码正常,如果不清除表,再执行一次代码,就会出现运行错误提示:无法在 System.Int32 和 System.String 上执行“=”操作。问题出在哪里,任何修改代码来避免出错,请各位老师指教,谢谢!!


Tables("班组工位").AutoSizeCols()
MainTable = Tables("班组工位")
'填充工位ID
Dim f As New Filler
f.SourceTable = DataTables("在线动态") '指定数据来源
f.SourceCols = "位置" '指定数据来源列
f.DataTable = DataTables("班组工位") '指定数据接收表
f.DataCols = "位置" '指定数据接收列
f.ExcludeExistValue = True
f.Fill()
'填充姓名
For Each cl As Col In Tables("班组工位").cols
    If cl.name <> "位置" Then
        For Each dr As DataRow In DataTables("班组工位").DataRows
            If dr.IsNull("位置") Then
                dr(cl.name) = Nothing
            Else
                Dim pr As DataRow = DataTables("在线动态").Find("位置 = '"& dr("位置") &"' And 组别 = '"& Right(cl.Name,2) &"'")
                If pr IsNot Nothing Then
                    dr(cl.name) = pr("姓名")
                End If
            End If
        Next
    End If
Next
'判断无小计行增加小计合计行
With Tables("班组工位")
    Dim r As Integer
    r = .Find("小计", .RowSel + 1, "位置", False, False, True)
    If r = - 1 Then '如果没有找到符合条件的行
        Dim dr1 As DataRow = DataTables("班组工位").AddNew()
        dr1("位置") = "小计"
        Dim dr2 As DataRow = DataTables("班组工位").AddNew()
        dr2("位置") = "合计"
    End If
End With
DataTables("班组工位").Save()
'清除小计和合计
Dim dr3 As DataRow = DataTables("班组工位").Find("位置 = '小计'")
For Each cl As Col In Tables("班组工位").cols
    If cl.name <> "位置" Then
        dr3(cl.Name) = Nothing
    End If
Next
Dim n As Integer = Tables("班组工位").Rows.Count - 1
Tables("班组工位")(n,1) = Nothing
DataTables("班组工位").Save()
'计数
Dim cnt As Integer = 0
For Each cl As Col In Tables("班组工位").cols
    If cl.name <> "位置" Then
        cnt = cnt + Tables("班组工位").Compute("Count([位置])", cl.Name & " Is Not Null")
    End If
Next
'填充小计合计
For Each cl As Col In Tables("班组工位").cols
    If cl.name <> "位置" Then
        dr3(cl.Name) = CSng(Tables("班组工位").Compute("Count([位置])", cl.Name & " Is Not Null")) &"/"& DataTables("在线动态").Compute("count(姓名)"," 组别 = '"& Right(cl.Name,2) &"'")
    End If
Next
Tables("班组工位")(n,1) = CSng(cnt) &"/"& CSng(DataTables("在线动态").Compute("count(姓名)"))
Tables("班组工位").AutoSizeCols()
DataTables("班组工位").Save()

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


[此贴子已经被作者于2015/4/16 15:30:08编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/16 14:25:00 [只看该作者]

最简单的做法,在代码之前加入清除代码

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2015/4/16 14:30:00 [只看该作者]

谢谢Bin老师的回复,这段代码在其他项目上运行正常,搬到这个项目上就出现问题。因为是要在大屏上显示,怕加了清除代码会出现闪屏,所以还请Binl老师帮助看看,给予指教,在这里谢谢了!!

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/4/16 14:34:00 [只看该作者]

错误提示是无法在整数和字符之间进行=比较,检查列的数据类型,以及合成的表达式。

这种问题,用这个方法分析一下,找出是那一行出错:
http://www.foxtable.com/help/topics/1485.htm

你很快就知道原因了。

不到30秒,就知道是这这一行:

    Dim pr As DataRow = DataTables("在线动态").Find("位置 = '"& dr("位置") &"' And 组别 = '"& Right(cl.Name,2) &"'")

检查位置列,发现位置列是整数型,整数型合成表达式,不需要单引号,应该:

 Dim pr As DataRow = DataTables("在线动态").Find("位置 = "& dr("位置") &" And 组别 = '"& Right(cl.Name,2) &"'")

其他你可以自己调整。
[此贴子已经被作者于2015/4/16 14:37:12编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/16 14:35:00 [只看该作者]

..

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/16 14:36:00 [只看该作者]

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


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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2015/4/16 15:29:00 [只看该作者]

谢谢Bin老师的指教,闪屏的问题一直困扰着我,这下彻底解决了,再次感谢狐爸和Bin老师的热心指导!!

 回到顶部