레코드의 필드에 대한 데이터 추출

가장 공통적인 API 호출 중 하나는 FieldInfo 오브젝트입니다. 예를 들어, FieldInfo 오브젝트에는 레코드의 필드 값을 가져오는 데 사용할 수 있는 GetValue 메소드가 있습니다.

다음 external application 서브루틴은 FieldInfo 오브젝트에 저장된 정보를 출력합니다. 코드는 여기에 표시되지 않은 외부 루틴(메시지 상자에 인수를 인쇄하는 StdOut)을 호출합니다.

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

피드백