Extracting data about a field in a record

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.

VBScript

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 

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

Commentaires