class KMQuestionnaireAnswerControl_X extends KMQuestionnaireAnswerControl_Win32 { KMVirtualNetworkAnswerAnswer answer[]; } protected KMVirtualNetworkAnswerAnswer getControlValue(Counter _counter) { return answer[_counter]; } public void setValue(int _seq, str _value) { answer[_seq] = _value; } public static KMQuestionnaireAnswerControl_X construct() { return new KMQuestionnaireAnswerControl_X(); }How to save questionnaire answers from X++ code
static void testKMQuestionnaireSave(Args _args) { // \Data Dictionary\Tables\KMCollection\Fields\kmCollectionId KMCollectionId collectionId; // \Data Dictionary\Tables\KMVirtualNetworkAnswerLine\Fields\kmQuestionId // \Data Dictionary\Tables\KMCollectionQuestion\Fields\kmQuestionId KMQuestionId questionId; // \Data Dictionary\Tables\KMVirtualNetworkAnswerTable\Fields\kmVirtualNetworkAnswerTableId // Might be empty if it is new answer KMVirtualNetworkAnswerTableId tableAnswerId; KMVirtualNetworkAnswerLine kMVirtualNetworkAnswerLine; KmQuestionnaireSave kmQuestionnaireSave; KMQuestionnaireIterator kmQuestionnaireIterator; KMQuestionnaireAnswerControl_X answerControl; KMCollectionQuestion kMCollectionQuestion; HcmPersonRecId person; str answer; int seqCounter; person = DirPersonUser::current().PersonParty; if (!person) { throw warning(strfmt("@SYS32944", curuserid())); } // create as much answers as you Questionnaire requires answerControl = KMQuestionnaireAnswerControl_X::construct(); answerControl.setQuestion(questionId); answerControl.setValue(seqCounter, answer); // delete all previous answers if any delete_from kMVirtualNetworkAnswerLine where kMVirtualNetworkAnswerLine.kmVirtualNetworkAnswerTableId == tableAnswerId; kmQuestionnaireIterator = new KMQuestionnaireIterator(collectionId); kmQuestionnaireIterator.generateArray(); kmQuestionnaireSave = KmQuestionnaireSave::construct( kmQuestionnaireIterator.mandatoryQuestions(), tableAnswerId, collectionId, person); kMCollectionQuestion = KMCollectionQuestion::find(collectionId, questionId); // Add all your answers. It saves to TMP table kmQuestionnaireSave.save(kMCollectionQuestion, answerControl, kMCollectionQuestion.mandatory, false); // Actual write to DB. kmQuestionnaireSave.close(); }
DaxOnline.org is free platform that allows you to quickly store and reuse snippets, notes, articles related to Dynamics AX.
Authors are allowed to set their own AdSense units and "buy me a coffee" link.
Join us.