SQL問題請教
1.FailCodeDescription.Text = Trim(rs.Fields("FailCodeDescription") & "")==>沒有綠色部分代碼,如果數據為空,程序報錯;原因分析:VB里面变量的声明和C里面是不一样的,在Vb里面申明变量的时候实际上干了两件事,1是定义一个变量名,2是给变量分配内存空间,Null的话是表示变量只有变量名没有存储空间,所以在VB里面是不可以给变量赋Null值的。 
rs.Fields("FailItemDescription") & ""的结果不管rs.Fields("FailItemDescription")的值是什么返回的结果都是String型,所以FailItemDescription.Text = Trim(rs.Fields("FailItemDescription") & "") 是正确的,而FailItemDescription.Text = Trim(rs.Fields("FailItemDescription"))当rs.Fields("FailItemDescription")的值为Null的时候就会出错。 2.num = Adodc1.Recordset.RecordCount==>如果數據為空,程序報錯;根據以上原因分析該句代碼需怎樣修改呢?num = Adodc1.Recordset.RecordCount & 0
num = (Adodc1.Recordset.RecordCount) & 0
num = Adodc1.Recordset.RecordCount & '0'
num = (Adodc1.Recordset.RecordCount) & '0'

解决方案 »

  1.   

    你对VB变量的理解还是有点问题的:'问题1:
     Dim a As Variant
     a = Null 'a可以为空NULL'TextBox是字符串型的(string)不可以等于NULL,只可以等于Empty或"",表示空串。
     Text1.Text = Empty
     Text1.Text = ""'(NULL & "")自动强制转换的结果是""
     Text1.Text = NULL & "" '问题2:
    '是因为你没有打开数据库,跟赋值没有关系,你应该这样做:
    Adodc1.Refresh
    num = Adodc1.Recordset.RecordCount'数据表为空时,也就是没有记录时,Adodc1.Recordset.RecordCount返回0,应该不会出错
     dim num as long
     num = Adodc1.Recordset.RecordCount 
      

  2.   

     ' 更新"DataGrid1"數據
            'Dim strQuery As String                           'Update數據
            'Dim num1 As Integer
            strQuery = "select * from Info order by SN"
            'Me.Adodc2.Refresh
            'num1 = Adodc2.Recordset.RecordCount
            'If num1 = 0 Then
                'Exit Sub
            'Else
                Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\information.mdb"
                Me.Adodc2.RecordSource = strQuery
                If strQuery <> "" Then
                        Me.Adodc2.Refresh
                End If
                Set Me.DataGrid1.DataSource = Me.Adodc2.Recordset
                Me.Adodc2.Recordset.MoveLast                     '指向Last              '2009.10.4如沒有數據,請報錯,需處理;
                Me.DataGrid1.Refresh
                'Exit Sub
            'End If

    以上代碼如果為空,報錯在紅色字體;
      

  3.   

    Dim strQuery As String
        strQuery = "select * from Info order by SN"
        Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\information.mdb"
        Adodc2.RecordSource = strQuery
        If strQuery <> "" Then
            Adodc2.Refresh
        End If
        Set DataGrid1.DataSource = Adodc2.Recordset
        If Not Adodc2.Recordset.EOF Then                 '加上这一句
            Adodc2.Recordset.MoveLast                    '指向Last              '2009.10.4如沒有數據,請報錯,需處理;
        End If
      

  4.   

    [size=10px]在執行語句"Me.Adodc2.Recordset.MoveLast "之前判斷數據是否為空;數據為空,不執行"Me.Adodc2.Recordset.MoveLast "語句,數據不為空,執行"Me.Adodc2.Recordset.MoveLast "語句TKS!