由于新旧数据库的不同,怎样在程序启动时判断 access 数据库中名为 QH 的表格中是否还有 “切换点属性” 这一字段呢?
如果表中不存在,就需要新建这个字段。那怎样才能做到呢?谢谢

解决方案 »

  1.   

    Public Function UpdateDB() As Boolean
    On Error Resume Next
        Dim strsql As String
        Dim rs As New ADODB.Recordset
        '查询表QH检查是否有字段"切换点属性",不返回记录
        strsql = "select [切换点属性] from qh where 0=1"
        rs.Open strsql, dbConnection, adOpenKeyset, adLockReadOnly
        rs.Close
        Set rs = Nothing
        
        If Err.Number = 0 Then    '检查是否发生了错误,没有错误表示QH表中有此字段
            UpdateDB = True
            Exit Function
        Else
            Err.Clear
            
            '发生了错误表示没有此字段,通过ALTER TABLE语句追加此字段
            strsql = "ALTER COLUMN qh ALTER COLUMN [切换点属性] NVARCHAR(20) NULL"
            dbConnection.Execute strsql
                    
            If Err.Number <> 0 Then
                UpdateDB = False
            Else
                UpdateDB = True
            End If
        End If
    End Function
      

  2.   

    遍历字段就可以了
        For i = 0 To rs.Fields.Count - 1
            If rs.Fields(i).Name = strFieldName Then
                blnField = True
                rs.Close
                cn.Close
                Exit Function
            End If
        Next
      

  3.   

    Sorry 有点小错误,
    strsql = "ALTER COLUMN qh ALTER COLUMN [切换点属性] NVARCHAR(20) NULL"
    应该是:
    strsql = "ALTER table qh ALTER COLUMN [切换点属性] NVARCHAR(20) NULL"
      

  4.   

    靠! 晕,还没写对!Public Function UpdateDB() As Boolean
    On Error Resume Next
        Dim strsql As String
        Dim rs As New ADODB.Recordset
        '查询表QH检查是否有字段"切换点属性",不返回记录
        strsql = "select [切换点属性] from qh where 0=1"
        rs.Open strsql, dbConnection, adOpenKeyset, adLockReadOnly
        rs.Close
        Set rs = Nothing
        
        If Err.Number = 0 Then    '检查是否发生了错误,没有错误表示QH表中有此字段
            UpdateDB = True
            Exit Function
        Else
            Err.Clear
            
            '发生了错误表示没有此字段,通过ALTER TABLE语句追加此字段
            strsql = "ALTER TABLE qh ADD [切换点属性] VARCHAR(20) NULL"
            dbConnection.Execute strsql
                    
            If Err.Number <> 0 Then
                UpdateDB = False
            Else
                UpdateDB = True
            End If
        End If
    End Function