如何确定DATAGRID中的某一列不能为空呢?我写了一段代码,但总是报“类型不匹配”的问题,不知道如何解决,请各位高手帮帮忙吧,要不我就要去跳楼了!!!
代码如下:
For i = 0 To Me.DataGridHbzd.Columns.Count - 1
    If Me.DataGridHbzd.Columns(i).Value = Null Then 
       '就上面这句报错,只要是某行某列为空就报类型不匹配       If MsgBox("任何一列都不能为空,请重新编辑!", vbOKOnly + vbDefaultButton1 + vbInformation, "重要提示!") = vbOK Then
          Me.rsTest.CancelBatch adAffectAllChapters
          Exit Sub
       End If
               
       Else
          Me.rsTest.UpdateBatch adAffectAllChapters
          strSQL = "select * from c_hbzd where sjhh='" & _
                   Sjhh & "' ordby sxh"
              
          Set Me.DataGridHbzd.DataSource = rsTest
          rsTest.Requery
           
       End If
       Next i
       Exit Sub

解决方案 »

  1.   

    你的数据库中字段不允许为空,如果不能修改数据库,可以在DataGrid赋值是处理一下,如果字段是数字类型的,可以赋值为0,如果是字符型的可以赋值为"",日期型可以用当前日期代替....
      

  2.   

    在vb的赋值里好像不支持null
    Me.DataGridHbzd.Columns(i).Value =""
    这样写试试
      

  3.   

    写成Me.DataGridHbzd.Columns(i).Value =""也会报这个错误。
      

  4.   

    TO:Cooly(☆回答问题不要分儿☆) 
    我不太明白您的意思,可能是我太笨了,请再次赐教!
      

  5.   

    If Me.DataGridHbzd.Columns(i).Value = Null Then 
    这句改成:
    if isnull(me.datagridhbzd.columns(8).value) then
      

  6.   

    For i = 0 To Me.DataGridHbzd.Columns.Count - 1
        If isNull(Me.DataGridHbzd.Columns(i).Value) Then 
           '就上面这句报错,只要是某行某列为空就报类型不匹配       MsgBox "任何一列都不能为空,请重新编辑!", vbOKOnly + vbDefaultButton1 + vbInformation, "重要提示!"
           Me.rsTest.CancelBatch adAffectAllChapters
           Exit Sub
                   
        Else
           Me.rsTest.UpdateBatch adAffectAllChapters
           strSQL = "select * from c_hbzd where sjhh='" & _
                    Sjhh & "' ordby sxh"
                  
           Set Me.DataGridHbzd.DataSource = rsTest
           rsTest.Requery
               
        End If
    Next i
           Exit Sub
      

  7.   

    if isnull(xxx) then
    end if
      

  8.   

    试试把
    If Me.DataGridHbzd.Columns(i).Value = Null Then 
    改成
    If Me.DataGridHbzd.Columns(i).Value = vbNullstring Then
      

  9.   

    Me.DataGridHbzd.Columns(i) = Null
    不是
    Me.DataGridHbzd.Columns(i).Value = Null
      

  10.   

    我也遇见过这样的情况,好象Me.DataGridHbzd.Columns(i) = Null这样的方法都不
    用,我是使用循环来解决的。
    datagrid1.col=1
    for i=0 to rs.recordcount-1
      datagrid1.row=i
      if datagrid1.text="" then 
         msgbox "",vbexclamation,""
         datagrid1.setfocus
         exit sub
       end if
    next i
      

  11.   

    用下面的写法可能更好,占用资源少,方便:
    Private Sub DataGrid1_BeforeColUpdate(ByVal ColIndex As Integer, OldValue As Variant, Cancel As Integer)
       If DataGrid1.Columns(ColIndex).Value = "" Then
          cancle = True
       Else
          cancle = False
       End If
    End SubPrivate Sub DataGrid1_Error(ByVal DataError As Integer, Response As Integer)
       Response = 0
    End Sub