Extracción de datos sobre un campo de un registro

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.

VBScript

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 

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

Comentarios