Public Sub CheckValidValue(Optional TableName As String = "BUG") ' Check for valid values of fields Dim BugFact As BugFactory Dim bugList As List Dim aField As TDField Dim fieldList As List Dim rc, ErrCode As Long Dim aBug As Bug Dim msg$ Dim okCnt%, noNodeCnt%, errorCnt%, unknownCnt% Dim dataType As Long '------------------------------------------------ ' User BugFactory.Fields to get a list of TDField ' objects in the bug table. ' This example uses the BugFactory, but this can ' be done with any class that implements IBaseFactory 'tdc is the global TDConnection object. Set BugFact = tdc.BugFactory Set fieldList = BugFact.Fields '---------------------------------------------- ' Use List.Count to check the number of items. Debug.Print: Debug.Print Debug.Print "There are " & fieldList.Count & _ " fields in this table." Debug.Print "----------------------------------" 'Get any bug. To look at field attributes we ' need a valid object. Since this example is ' not interested in the particular values of the object, ' it doesn't matter which bug. Set bugList = BugFact.NewList("") Set aBug = bugList(0) ' Walk through the list. For Each aField In fieldList With aField ' Quit when we have enough for this example. If InStr(aField.name, "BG_USER_10") > 0 Then Exit For ' For the DataTypeString() code, ' see example "Convert data types to string" Debug.Print .name & ", " & .Property & ", Data type is " _ & DataTypeString(.Type) On Error Resume Next '---------------------------------------------------- 'Use TDField.IsValidValue to confirm that a value can 'be used for a field. ' Get the correct data type and check validity of an ' arbitrary value. ' Save the error code immediately after IsValidValue call ' before another call can change the err object. dataType = aField.Type Select Case dataType Case TDOLE_LONG, TDOLE_ULONG aField.IsValidValue 5, aBug ErrCode = err.Number Case TDOLE_FLOAT aField.IsValidValue 5.5, aBug ErrCode = err.Number Case TDOLE_STRING aField.IsValidValue "Joe", aBug ErrCode = err.Number Case Else 'These will be errors: aField.IsValidValue _ "String to non-string value", aBug ErrCode = err.Number End Select ' Output an error code message. If ErrCode = 0 Then 'S_OK msg = "Valid Value" okCnt = okCnt + 1 Else rc = ErrCode - vbObjectError Select Case rc Case FIELD_E_VERIFIED msg = "Error: Invalid value for field" errorCnt = errorCnt + 1 Case TDOLE_NONODE msg = "Error: Field can not be set to this value" noNodeCnt = noNodeCnt + 1 Case Else msg = "Unrecognized error: " & rc _ & " , HRESULT = " & ErrCode unknownCnt = unknownCnt + 1 End Select End If Debug.Print vbTab & msg ' End With 'aField Next aField Debug.Print "----------------------------------" Debug.Print "Number of fields with valid value = " & okCnt Debug.Print "Number of fields with invalid type = " & errorCnt Debug.Print "Number of fields with invalid value= " & noNodeCnt Debug.Print "Number of fields with unknown error = " & unknownCnt Debug.Print "----------------------------------" End Sub