Foxtable(狐表)用户栏目专家坐堂 → [求助]代码出错,到类型"double"的转换无效(已解决)


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

主题:[求助]代码出错,到类型"double"的转换无效(已解决)

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]代码出错,到类型"double"的转换无效(已解决)  发帖心情 Post By:2011/10/20 23:52:00 [只看该作者]

一段代码,提取上个月月底的累计兑现列的值,代码运行出错,请各位老师指教如何修改代码,谢谢!!

 

代码如下:

'绩效奖_累计已兑_DataColChanged
Select Case e.DataCol.Name
    Case "日期","单位","绩效奖_累计兑现","核算标准"
        Dim dr As DataRow = e.DataRow
        Dim mydate As Date = dr("日期")
        Dim y As Integer = mydate.Year
        Dim m As Integer = mydate.Month
        If m <> 1 Then
            Dim m1 As Integer = m - 1
            Dim Days As Integer = Date.DaysInMonth(y,m1)
            Dim syd As Date = New Date(y,m1,Days) '上月月底日期
            If dr.IsNull("日期") OrElse dr.IsNull("单位") OrElse dr("绩效奖_累计兑现") = 0 Then
                dr("绩效奖_累计已兑") = 0
            Else
                dr("绩效奖_累计已兑") = " '" & dr("绩效奖_累计兑现") & "' And 单位 = '" & dr("单位") & "'And 日期 =# '" & syd & "'#"
            End If
            dr("绩效奖_累计已兑") = 0
    End If
End Select

 

 


图片点击可在新窗口打开查看此主题相关图片如下:l.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2011-10-21 23:31:02编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2011/10/21 0:09:00 [只看该作者]

 dr("绩效奖_累计兑现")  把这句转成字符串

CStr(dr("绩效奖_累计兑现") )


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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/10/21 0:19:00 [只看该作者]

谢谢hanxuntx老师的回复,但是可能不行,提示出错。

 


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

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


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2011/10/21 1:05:00 [只看该作者]

老师不敢当,同在论坛学习,也许我是瞎指点

 

CStr(dr("绩效奖_累计兑现") ) 这是一个值不能给他赋值了

 

应该是

 

DataTables("表名").Current("绩效奖_累计兑现")  = 表达式值


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/10/21 8:04:00 [只看该作者]

问题在这行:

 

dr("绩效奖_累计已兑") = " '" & dr("绩效奖_累计兑现") & "' And 单位 = '" & dr("单位") & "'And 日期 =# '" & syd & "'#"

dr("绩效奖_累计已兑")应该只接受数值的,可以你现在是将一个字符串赋值给他,当然出错的。

 

应该用Compute计算一个值再赋值:

 

http://www.foxtable.com/help/topics/0393.htm

 

 


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


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2011/10/21 15:36:00 [只看该作者]

学习了

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/10/21 22:28:00 [只看该作者]

谢谢狐爸老师的回复,可能是我没有讲清楚,用图说明:目的是将从蓝色标记的单元格取值,填充到红色标记的单元格,应该如何修改代码,请各位老师指教,谢谢!!

附图:

 

 


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

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/10/21 22:49:00 [只看该作者]

规则是什么?

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/10/21 22:53:00 [只看该作者]

单位=单位,日期=上月月底,累计已兑=累计兑现(也就是上月累计兑现)。如果月份是1月,累计已兑=0。
[此贴子已经被作者于2011-10-21 22:53:58编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/10/21 23:06:00 [只看该作者]

为什么不会呢? 不就是find出符合条件的行吗?

 

Select Case e.DataCol.Name
    Case "日期","单位"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("日期") OrElse dr.IsNull("单位") OrElse dr("绩效奖_累计兑现") = 0 Then
            dr("绩效奖_累计已兑") = 0
        Else
            Dim mydate As Date = dr("日期")
            If mydate.month = 1 Then
                dr("绩效奖_累计已兑")  = 0
            Else
                mydate= mydate.AddMonths(-1)
                mydate = New Date(mydate.year,mydate.month,Date.DaysInMonth(mydate.Year,mydate.month))
                Dim dr1 As DataRow = e.DataTable.Find("单位 = '" & dr("单位") & "'And 日期 =# '" & mydate & "'#")
                If dr1 IsNot Nothing Then
                    dr("绩效奖_累计已兑") = dr1("绩效奖_累计兑现")
                Else
                    dr("绩效奖_累计已兑")  = 0
                End If
            End If
        End If
End Select


 回到顶部
总数 22 1 2 3 下一页