web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Microsoft Dynamics AX (Archived)

Query Service , Execute Dynamic Query , Error :

(0) ShareShare
ReportReport
Posted on by 690

Hi all,

I am following this link and created a very simple sample. The X++ code as well as the .NET code is given below. I did a compile, compile forward and Incremental CIL on AX after creating the X++ side of code.

I quite do not understand why this error is coming. The error is :

Error:

Message: Cannot create an abstract class.

Stack Trace:    at System.Runtime.Serialization.FormatterServices.nativeGetUninitializedObject(RuntimeType type)
   at ReadPagingFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )
   at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
   at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract& dataContract)
   at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns)
   at System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.PartInfo.ReadObject(XmlDictionaryReader reader, XmlObjectSerializer serializer)
   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)
   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameters(XmlDictionaryReader reader, PartInfo[] parts, Object[] parameters, Boolean isRequest)
   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)
   at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
   at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters)
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

 

The code is as below:

-- Query Builder Args class

[DataContractAttribute]
public class DemoQueryBuilderArgs extends AifQueryBuilderArgs
{
    RecId refRecId;
}

[DataMemberAttribute]
public RecId RefRecordId(Recid _refRecId = refRecId)
{
    refRecId = _refRecId;
    return refRecId;
}

-- QueryBuilder class

public class DemoQueryBuilder extends AifQueryBuilder
{
    DemoQueryBuilderArgs args;
    str                         datasetName;
}


//Used internally to access the args object
private DemoQueryBuilderArgs getArgs()
{
    return args;
}

[SysEntryPointAttribute]
public void initialize()
{
    query = new Query(queryStr(CustTable));


    queryRun = new QueryRun(query);
}

public void setArgs(AifQueryBuilderArgs _args)
{
    if(!_args
    || classIdGet(_args) != classNum(DemoQueryBuilderArgs))
    {
        throw error("@SYS95118");
    }
    args = _args;
}


My .NET Console application code :

static void Main(string[] args)
        {
            // Test
            MyQueryServiceRef.QueryServiceClient client = new MyQueryServiceRef.QueryServiceClient();
            MyQueryServiceRef.Paging paging = new MyQueryServiceRef.Paging();
            MyQueryServiceRef.DemoQueryBuilderArgs args = new MyQueryServiceRef.DemoQueryBuilderArgs();
            analytics.RefRecordId = 73897173;
            analytics.ReturnFlatDataSet = true;
            var datasetResult = client.ExecuteDynamicQuery("DemoQueryBuilder", args, ref paging);
            
        }

- Girija

 

*This post is locked for comments

I have the same question (0)
  • Verified answer
    Girija Shankar Beuria Profile Picture
    690 on at

    Hi,

    Figured it out, I was using:

    MyQueryServiceRef.Paging paging = new MyQueryServiceRef.Paging();

    Should have used :

    MyQueryServiceRef.Paging paging = null;

    - Girija

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Launch!

Jump in, show your community spirit, and win prizes!

Women in Power Builds Momentum

Expanding mentorship, skilling, and AI innovation

Congratulations to the May Top 10 Community Leaders

These are the community rock stars!

Leaderboard > 🔒一 Microsoft Dynamics AX (Archived)

#1
CP04-islander Profile Picture

CP04-islander 16

#2
Nagendra Varma K Profile Picture

Nagendra Varma K 4

#2
Harisgillani Profile Picture

Harisgillani 4

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans