0

したがって、返品ケース、返金ケースなどのデータ構造「ケース」があります。フィールドの1つは「CaseComments」フィールドです。このフィールドは(C#wsdlで生成されたコードでは)QueryResultフィールドです。

CaseCommentsをクエリするには、次を使用できることを知っています。

SELECT (SELECT ParentId, CommentBody FROM Case.CaseComments) FROM Case

すべてのケースコメントのParentIdフィールドとCommentBodyフィールドを取得します。しかし、それは私が得ていない、またはその方法に関する合理的なドキュメントを見つけていない挿入物です。

次のような強い型のクエリを使用したいと思います。

    Case updateCase = new Case();
    updateCase.Id = caseToAddToID;
    updateCase.CaseComments = new QueryResult();
    updateCase.CaseComments.records = (sObject[])new CaseComment[1];
    updateCase.CaseComments.records[0] = new CaseComment();
    ((CaseComment)updateCase.CaseComments.records[0]).ParentId = caseToAddToID;
    ((CaseComment)updateCase.CaseComments.records[0]).CommentBody = noteToAdd;

    binding.update(new sObject[]{updateCase});

しかし、このようなことをすると、エラーが発生します。

    Error: getting record type info.
    INVALID_FIELD: No such column 'CaseComments' on entity 'Case'. 
    If you are attempting to use a custom field, be sure to append 
    the '__c' after the custom field name. Please reference your WSDL
    or the describe call for the appropriate names.

しかし、caseCommentデータ構造だけでcreate()を使用しようとすると、エラーなしで挿入されますが、Caseに適切に関連付けられず、それらを見つけることができないようです。

4

1 に答える 1

1

驚いたことに、新しいケースのコメントが実際に保存されていることを確認することをお勧めします。APEXでは、子関係フィールド(つまり)に書き込もうとすると例外が発生しupdateCase.CaseComents.records = (sObject[]) new CaseComment[1];ますが、レコードは更新されなくても配列に追加できます。

たとえば、これはエラーをスローします

 Case updateCase = new Case();
 updateCase.caseComments = new List<CaseComment>(); // throws compile error in APEX

これは可能ですが、新しいケースコメントは保存されません。

 Case updateCase = [select (select id from CaseComments) from Case where id = '1234'];
 updateCase.caseComments.add(new CaseComment(commentBody = 'comment));
 binding.update(new sObject[]{ updateCase });

適切な方法は、別のDMLステートメントでそれらを作成することです。

 CaseComment newComment = new CaseComment();
 newComment.parentId = caseToAddToId;
 newComment.commentBody = noteToAdd;
 binding.update(new sObject[] { newComment });
于 2012-06-20T04:30:20.200 に答える