Una de las llamada de API más comunes es al objeto FieldInfo. Por ejemplo, el objeto FieldInfo tiene el método GetValue que le permite obtener el valor de un campo de un registro.
La subrutina de aplicación externa siguiente imprime la información almacenada en un objeto FieldInfo. El código invoca una rutina externa que no se muestra aquí: StdOut, que imprime los argumentos en un recuadro de mensaje.
Sub DumpFieldInfo(info) ' The parameter is a FieldInfo object.
Dim temp ' Long
Dim status ' String
Dim validity ' String
Dim valuechange ' String
Dim validchange ' String
Dim value ' 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
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);