Miklix

Kyselyn käyttäminen SysOperation-tietosopimusluokassa Dynamics AX 2012:ssa

Julkaistu: 16. helmikuuta 2025 klo 1.22.21 UTC
Viimeksi päivitetty: 12. tammikuuta 2026 klo 8.47.08 UTC

Tässä artikkelissa käsitellään käyttäjän määrittämän ja suodatettavan kyselyn lisäämistä SysOperation-tietosopimusluokkaan Dynamics AX 2012:ssa (ja Dynamics 365 for Operationsissa).


Tämä sivu on käännetty koneellisesti englannista, jotta se olisi mahdollisimman monen ihmisen saatavilla. Valitettavasti konekääntäminen ei ole vielä täydellistä tekniikkaa, joten virheitä voi esiintyä. Voit halutessasi tarkastella alkuperäistä englanninkielistä versiota täällä:

Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012

Tämän viestin tiedot perustuvat Dynamics AX 2012 R3:een. Ne eivät välttämättä päde muihin versioihin. (Päivitys: Voin vahvistaa, että tämä toimii myös Dynamics 365 for Operationsissa)

Minulta tuntuu aina unohtuvan yksityiskohdat siitä, miten kysely määritetään ja alustetaan SysOperation-kehyksessä. Luulen, että useimmat tekemäni erätyöt eivät perustu käyttäjän määrittämiin kyselyihin, mutta silloin tällöin minun on tehtävä tällainen erätyö, joten tämä viesti on myös omaksi tiedoksi.

Ensinnäkin data contract -luokassa kysely tallennetaan pakattuna merkkijonoon. Sen parm-metodi on varustettava AifQueryTypeAttribute-attribuutilla, kuten tässä esimerkissä (tässä esimerkissä olen käyttänyt SalesUpdate-kyselyä, mutta voit korvata sen millä tahansa AOT-kyselyllä):

[
    DataMemberAttribute,
    AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
    ;

    packedQuery = _packedQuery;
    return packedQuery;
}

Jos haluat kyselyn päättävän kontroller-luokan sijaan, voit käyttää myös tyhjää merkkijonoa. Tässä tapauksessa sinun on myös toteutettava pari apumetodia (jotka sinun luultavasti kannattaa toteuttaa joka tapauksessa oman mukavuutesi vuoksi, kun sinun on käytettävä kyselyä):

public Query getQuery()
{
    ;

    return new Query(SysOperationHelper::base64Decode(packedQuery));
}

public void setQuery(Query _query)
{
    ;

    packedQuery = SysOperationHelper::base64Encode(_query.pack());
}

Jos sinun on alustettava kysely (esimerkiksi lisättävä alueita), sinun tulee toteuttaa initQuery-metodi:

public void initQuery()
{
    Query queryLocal = this.getQuery();
    ;

    // add ranges, etc...

    this.setQuery(queryLocal);
}

Sinun on varmistettava, että kutsut tätä metodia controller-luokasta.

Lisälukemista

Jos pidit tästä postauksesta, saatat pitää myös näistä ehdotuksista:


Jaa BlueskyssäJaa FacebookissaJaa LinkedInissäJaa TumblrissaJaa X:ssäJaa LinkedInissäPin Pinterestissä

Mikkel Christensen

Kirjoittajasta

Mikkel Christensen
Mikkel on miklix.com-sivuston luoja ja omistaja. Hänellä on yli 20 vuoden kokemus ammattimaisena tietokoneohjelmoijana/ohjelmistokehittäjänä, ja tällä hetkellä hän työskentelee kokopäiväisesti suuressa eurooppalaisessa IT-yrityksessä. Kun hän ei ole bloggaamassa, hän käyttää vapaa-aikaansa monenlaisiin kiinnostuksen kohteisiin, harrastuksiin ja aktiviteetteihin, mikä saattaa jossain määrin heijastua tällä verkkosivustolla käsiteltävien aiheiden moninaisuuteen.