| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 677 人关注过本帖
标题:求助if not isnull 类型错误
只看楼主 加入收藏
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
结帖率:84%
收藏
已结贴  问题点数:10 回复次数:11 
求助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
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
这个,看静态代码无法帮助你。

类型不匹配,说明这个不属于 一般的没有给值的变量,
那就要考虑这个变量是否初始化过了。
是否初始化了,使用这个函数。 IsEmpty

估计要先判断一下是否初始化了,然后再判断是否有值。

授人于鱼,不如授人于渔
早已停用QQ了
2014-02-10 16:35
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:0 
回复 3楼 风吹过b
请问如何判断是否初始化?因为我数据库中对应的是null值
2014-02-10 16:44
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:10 
判断记录集对应字段IsNull(adodc1.Recordset.Fields ("回单数量"))
或者判断为空字符串If DataGrid1.Columns("回单数量")=""
2014-02-10 17:16
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
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
If Not IsNull(DataGrid1.Columns("修正单价")) Then

无知
2014-02-11 15:18
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:0 
回复 8楼 Artless
版主,请注意看我的提问。。。。我的意思是为什么有的代码这么写不报错,结合我本帖提出的问题
2014-02-11 16:08
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
回复 8楼 Artless
我希望你作为版主,在回复前要反复验证。不要不负责任地信手一回!不要太南郭先生了。
回复楼主的问题:null在vb中是个很特殊的类型,他不能对任何变量进行赋值,但可参与运算,任何运算结果都是null,实际上null只在数据库中存在,因为在数据库中的数据字段只有赋值了才分配存储空间,没赋值就不占存储空间,因此当读到某一记录的某一字段占用的字长为0时就作为null,DataGrid1.Columns("修正单价")) 的值就是DataGrid1.Columns("修正单价")).Text的值,这是个字符型的数据,因此可以用=""来判断,而DataGrid1.Columns("修正单价")).Volume是一个类似于empty类型数据,也就是不确定类型,一般你给它赋什么类型数据它就是什么类型,但如果碰到null,由于null无法赋值,因此DataGrid1.Columns("修正单价")).Volume就无法确定数据类型,这就产生了类型不匹配的错误提示。

[ 本帖最后由 lowxiong 于 2014-2-11 16:26 编辑 ]
2014-02-11 16:11
快速回复:求助if not isnull 类型错误
数据加载中...
 
   



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

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