Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共22 条记录, 每页显示 10 条, 页签: [1] [2][3]
[浏览完整版]

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

1楼
yyzlxc 发表于: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编辑过]
2楼
hanxuntx 发表于:2011/10/21 0:09:00

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

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

3楼
yyzlxc 发表于:2011/10/21 0:19:00

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

 


图片点击可在新窗口打开查看此主题相关图片如下:m.png
图片点击可在新窗口打开查看
4楼
hanxuntx 发表于:2011/10/21 1:05:00

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

 

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

 

应该是

 

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

5楼
狐狸爸爸 发表于:2011/10/21 8:04:00

问题在这行:

 

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

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

 

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

 

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

 

 

6楼
hanxuntx 发表于:2011/10/21 15:36:00
学习了
7楼
yyzlxc 发表于:2011/10/21 22:28:00

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

附图:

 

 


图片点击可在新窗口打开查看此主题相关图片如下:n.png
图片点击可在新窗口打开查看
8楼
狐狸爸爸 发表于:2011/10/21 22:49:00
规则是什么?
9楼
yyzlxc 发表于:2011/10/21 22:53:00
单位=单位,日期=上月月底,累计已兑=累计兑现(也就是上月累计兑现)。如果月份是1月,累计已兑=0。
[此贴子已经被作者于2011-10-21 22:53:58编辑过]
10楼
狐狸爸爸 发表于: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 条记录, 每页显示 10 条, 页签: [1] [2][3]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03906 s, 2 queries.