| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 677 人关注过本帖
标题:求助if not isnull 类型错误
取消只看楼主 加入收藏
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
结帖率:84%
收藏
已结贴  问题点数:10 回复次数:6 
求助if not isnull 类型错误
Private Sub DataGrid1_BeforeColUpdate(ByVal ColIndex As Integer, OldValue As Variant, Cancel As Integer)
    If 明细金额对账 = 1 Then
        Dim 数量回单 As Variant
        Dim 单价修正 As Variant
        If ColIndex = 10 Then
            ID = DataGrid1.Columns("序号").Value
            If Not IsNull(DataGrid1.Columns("回单数量").Value) Then
                If Not IsNumeric(DataGrid1.Columns("回单数量").Value) Then
                    MsgBox "对不起,回单数量是数字,请重新输入", vbOKOnly, "错误提示"
                    Cancel = True
                    Exit Sub
                End If
            End If
        ElseIf ColIndex = 8 Then
            If Not IsNull(DataGrid1.Columns("修正单价").Value) Then
                If Not IsNumeric(DataGrid1.Columns("修正单价").Value) Then
                    MsgBox "对不起,修正单价是数字,请重新输入", vbOKOnly, "错误提示"
                    Cancel = True
                    Exit Sub
                End If
            End If
        ElseIf ColIndex = 13 Then
            时间 = DataGrid1.Columns("入账日期").Value
            If 时间 = 1 Or 时间 = 2 Or 时间 = 3 Or 时间 = 4 Or 时间 = 5 Or 时间 = 6 Or 时间 = 7 Or 时间 = 8 Or 时间 = 9 Or 时间 = 10 Or 时间 = 11 Or 时间 = 12 Then
                If (时间 < 服务器月 And 时间 >= 服务器月 - 1) Or (时间 = 12 And 服务器月 = 1) Then
                    核对日期 = 服务器年 & "-" & 时间 & "-" & "1"
                    单号 = DataGrid1.Columns("订单编号").Value
                    If MsgBox("确定已经完成对【" & Trim(单号) & "】的对账吗?" & Chr(13) & "此笔账目将要进入的月份为" & 服务器年 & "." & 时间 & "月,请确认!", vbYesNo, "提示信息") = vbYes Then
                      1.If IsNull(DataGrid1.Columns("回单数量").Value) And Not IsNull(DataGrid1.Columns("修正单价").Value) Then
                            sql3 = "update 财务应收 set 入账日期 ='" & 核对日期 & "',回单数量=送货数量 where 序号 ='" & ID & "'"
                            cn.Open strCn
                            rs.Open sql3, cn
                            cn.Close
                      2.ElseIf Not IsNull(DataGrid1.Columns("回单数量").Value) And IsNull(DataGrid1.Columns("修正单价").Value) Then
                            sql3 = "update 财务应收 set 入账日期 ='" & 核对日期 & "',修正单价=单价 where 序号 ='" & ID & "'"
                            cn.Open strCn
                            rs.Open sql3, cn
                            cn.Close
                      3.ElseIf IsNull(DataGrid1.Columns("回单数量").Value) And IsNull(DataGrid1.Columns("修正单价").Value) Then
                            sql3 = "update 财务应收 set 入账日期 ='" & 核对日期 & "',修正单价=单价,回单数量=送货数量 where 序号 ='" & ID & "'"
                            cn.Open strCn
                            rs.Open sql3, cn
                            cn.Close
                        End If
                        MsgBox "已经完成【" & Trim(单号) & "】对账,账目进入月份为" & 服务器年 & "." & 时间 & "月", vbOKOnly, "提示信息"
                        Cancel = True
                        Adodc1.Refresh
                        Call 单号金额对账初始化列宽修改限制
                    Else
                        Cancel = True
                        Exit Sub
                    End If

                Else
                    MsgBox "对不起,你所填写的对账日期超过了对账月份的限制!" & Chr(13) & "这个月只能入上个月的账目,无法人其他时间账目。", vbOKOnly, "错误提示"
                    Cancel = True
                    Exit Sub
                End If
            Else
                MsgBox "1年中只有12个月!请重新输入", vbOKOnly, "错误提示"
                Cancel = True
            End If
        End If
    End If
End Sub上述为代码。。。。。。。。。。。
问题陈述:代码三处共3处红字,为代码运行错误,提示错误信息为类型不匹配
代码用意:3个元素,回单数量,修正单价,入账日期,3个元素都是datagrid中的表格列,
操作步骤,当我去填写入账日期的时候,程序自动检查回单数量,与修正单价这2行数据,看看是否为空,如果为空则运行相应的sql语句
错误提示:类型不匹配
下面2张图
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

一张为界面图形,一张为代码运行错误图,还请大师指点。。谢谢


[ 本帖最后由 w360989426 于 2014-2-10 13:47 编辑 ]
2014-02-10 13:38
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:0 
来人啊,求解啊。。。
2014-02-10 15:41
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:0 
回复 3楼 风吹过b
请问如何判断是否初始化?因为我数据库中对应的是null值
2014-02-10 16:44
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:0 
回复 5楼 lowxiong
版主,空与NULl应该不是一个概念把?
2014-02-10 20:00
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:0 
回复 4楼 w360989426
那为啥我那样的写法不行呢,可是我有的代码是这样写的为什么不报错呢?红字部分,不过这个貌似我是处于编辑状态下的,但这和上述的有何区别?还请版主明示,防止以后犯同样的错误,谢谢!
  ElseIf ColIndex = 8 Then
            If Not IsNull(DataGrid1.Columns("修正单价").Value) Then
                If Not IsNumeric(DataGrid1.Columns("修正单价").Value) Then
                    MsgBox "对不起,修正单价是数字,请重新输入", vbOKOnly, "错误提示"
                    Cancel = True
                    Exit Sub
                End If
            End If
2014-02-10 21:22
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:0 
回复 8楼 Artless
版主,请注意看我的提问。。。。我的意思是为什么有的代码这么写不报错,结合我本帖提出的问题
2014-02-11 16:08
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:0 
回复 10楼 lowxiong
我明白了,谢谢版主的指导,太感谢了!谢谢!
2014-02-11 17:18
快速回复:求助if not isnull 类型错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041990 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved