Una delle più comuni chiamate API viene effettuata verso l'oggetto FieldInfo. Ad esempio, l'oggetto FieldInfo dispone del metodo GetValue che consente di acquisire il valore di un campo in un record.
La seguente routine secondaria dell'applicazione esterna stampa le informazioni memorizzate in un oggetto FieldInfo. Il codice richiama una routine esterna StdOut, non riportata in questo esempio, che stampa i relativi argomenti in una casella di messaggio.
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
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);