Extracting data about a field in a record

One of the most common API calls is to the FieldInfo Object. For example, the FieldInfo object has the GetValue method that enables you to get the value of a field in a record.

The following external application subroutine prints out the information stored in a FieldInfo object. The code invokes an external routine that is not shown here: StdOut, which prints its arguments to a message box.

VBScript

Sub DumpFieldInfo(info) ' The parameter is a FieldInfo object.
   Dim temp ' a Long 
   Dim status ' a String 
   Dim validity ' a String 
   Dim valuechange ' a String 
   Dim validchange ' a String 
   Dim value ' a String 

   temp = info.GetValueStatus() 
   If temp = AD_VALUE_NOT_AVAILABLE Then 
      status = "VALUE_NOT_AVAILABLE" 
   ElseIf temp = AD_HAS_VALUE Then 
      status = "HAS_VALUE value ='" & info.GetValue() & "'" 
   ElseIf temp = AD_HAS_NO_VALUE Then 
      status = "NO_VALUE" 
   Else 
      status = "<invalid value status: " & temp & ">" 
   End If 

   temp = info.GetValidationStatus() 
   If temp = AD_KNOWN_INVALID Then 
      validity = "INVALID" 
   ElseIf temp = AD_KNOWN_VALID Then 
      validity = "VALID" 
   ElseIf temp = AD_NEEDS_VALIDATION Then 
      validity = "NEEDS_VALIDATION" 
   Else 
      validity = "<invalid validation status: " & temp & ">"
   End If 

   valuechange = "" 
   If info.ValueChangedThisSetValue() Then 
      valuechange = valuechange & " setval=Y" 
   Else 
      valuechange = valuechange & " setval=N" 
   End If 

   If info.ValueChangedThisGroup() Then 
      valuechange = valuechange & " group=Y" 
   Else 
      valuechange = valuechange & " group=N" 
   End If 

   If info.ValueChangedThisAction() Then 
      valuechange = valuechange & " action=Y" 
   Else 
      valuechange = valuechange & " action=N" 
   End If 

   validchange = "" 
   If info.ValidityChangedThisSetValue() Then 
      validchange = validchange & " setval=Y" 
   Else 
      validchange = validchange & " setval=N" 
   End If 

   If info.ValidityChangedThisGroup() Then 
      validchange = validchange & " group=Y" 
   Else 
      validchange = validchange & " group=N" 
   End If 

   If info.ValidityChangedThisAction() Then 
      validchange = validchange & " action=Y" 
   Else 
      validchange = validchange & " action=N" 
   End If 

   StdOut "FieldInfo for field " & info.GetName() 
   StdOut " field's value = " & value 
   StdOut " value status = " & status 
   StdOut " value change =" & valuechange 
   StdOut " validity = " & validity 
   StdOut " validity change =" & validchange 
   StdOut " error = '" & info.GetMessageText() & "'" 
End Sub 

REM Start of Global Script StdOut
sub StdOut(Msg)
   msgbox Msg
end sub
REM End of Global Script StdOut 

Perl

use CQPerlExt;

$CQsession = CQSession::Build();
$CQsession->UserLogon("admin", "", "perl", "");
$record = $CQsession->GetEntity("Defect", "perl00000001");
$fieldInfo = $record->GetFieldValue("id");  
$temp = $fieldInfo->GetValueStatus();
if ($temp == $CQPerlExt::CQ_VALUE_NOT_AVAILABLE) {
   $status = "VALUE_NOT_AVAILABLE";

} elsif ($temp == $CQPerlExt::CQ_HAS_VALUE) {
   $status = "HAS_VALUE";
   $value = "'" & fieldinfo.GetValue() & "'";
} elsif ($temp == $CQPerlExt::CQ_HAS_NO_VALUE) {
   $status = "NO_VALUE";
} else {
   $status = "<invalid value status: " & temp & ">";
} 

$temp = $fieldInfo->GetValidationStatus();
if ($temp == $CQPerlExt::CQ_KNOWN_INVALID) {
   $validity = "INVALID";
} elsif ($temp == $CQPerlExt::CQ_KNOWN_VALID) {
   $validity = "VALID";
} elsif ($temp == $CQPerlExt::CQ_NEEDS_VALIDATION) {
   $validity = "NEEDS_VALIDATION";
} else {   
   $validity = "<invalid validation status: " & temp & ">";
}
$valuechange = "";
if ($fieldInfo->ValueChangedThisSetValue()) {   
   $valuechange = $valuechange & " setval=Y";
} else {
   $valuechange = $valuechange & " setval=N";
}
if ($fieldInfo->ValueChangedThisGroup()) {
   $valuechange = $valuechange & " group=Y";
} else {
   $valuechange = $valuechange & " group=N";
}
if ($fieldInfo->ValueChangedThisAction()) {
   $valuechange = $valuechange & " action=Y";
} else {
   $valuechange = $valuechange & " action=N";
}
$validchange = "";
if ($fieldInfo->ValidityChangedThisSetValue()) {
   $validchange = $validchange & " setval=Y";
} else {   
   $validchange = $validchange & " setval=N";
}
if ($fieldInfo->ValidityChangedThisGroup()) {
   $validchange = $validchange & " group=Y";
} else {
   $validchange = $validchange & " group=N";
}
if ($fieldInfo->ValidityChangedThisAction()) {
   $validchange = $validchange & " action=Y";
} else {
   $validchange = $validchange & " action=N";
}

print "FieldInfo for field = ", $fieldInfo->GetName(), "\n";
print "Field's value       = ", $value, "\n";
print "Value status        = ", $status, "\n";
print "Value change        = ", $valuechange, "\n";
print "Validity            = ", $validity, "\n";
print "Validity change     = ", $validchange, "\n";
print "Error = '", $fieldInfo->GetMessageText(), "'";
CQSession::Unbuild($CQsession);