Wednesday, September 14, 2016

Data Validation Finding required fields that are null in MS Access

Public Sub ProcessTables()
Dim db As DAO.Database
Dim td As DAO.TableDef
Dim strTableName As String

Set db = CurrentDb()

For Each td In db.TableDefs
    strTableName = td.Name
    Debug.Print td.Name
    Call ProcessTableDef(db, td)
Next


ExitProc:
    Set db = Nothing
    Set td = Nothing
    Exit Sub
End Sub


Private Sub ProcessTableDef(db As DAO.Database, td As DAO.TableDef)
Dim fld As DAO.Field
Dim strSQL As String
Dim strTableName As String
Dim strColumnName As String
Dim rst As DAO.Recordset
Dim lngRecordCount As Long

strTableName = td.Name


If Left$(strTableName, 4) = "MSys" Then
    'do nothing
Else
    For Each fld In td.Fields
        strColumnName = fld.Name
        strSQL = "SELECT COUNT(*) FROM " & strTableName & " WHERE " & "[" & strColumnName & "]" & _
            " IS NULL "
        If fld.Type = 101 Or fld.Type = 104 Then
       
        Else
            Set rst = db.OpenRecordset(strSQL, dbOpenSnapshot)
            If Not rst.EOF() Then
                lngRecordCount = CLng(rst.Fields(0).Value)
                If lngRecordCount > 0 Then
                    Debug.Print strTableName, strColumnName, lngRecordCount, strSQL
                End If
            End If
        End If
    Next
End If
Debug.Print ""


End Sub

No comments: