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.

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);