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