One of the most common API calls is to the FieldInfo Object. Par exemple, l'objet FieldInfo contient la méthode GetValue, qui vous permet d'obtenir la valeur d'une zone dans un enregistrement.
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.
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);