டைனமிக்ஸ் AX 2012 இல் SysOperation தரவு ஒப்பந்த வகுப்பில் வினவலைப் பயன்படுத்துதல்
வெளியிடப்பட்டது: 16 பிப்ரவரி, 2025 அன்று AM 1:24:44 UTC
இந்தக் கட்டுரை, Dynamics AX 2012 (மற்றும் Dynamics for Operations 365) இல் உள்ள SysOperation தரவு ஒப்பந்த வகுப்பில் பயனர்-கட்டமைக்கக்கூடிய மற்றும் வடிகட்டக்கூடிய வினவலை எவ்வாறு சேர்ப்பது என்பது குறித்த விவரங்களைப் பற்றி விவாதிக்கிறது.
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
இந்தப் பதிவில் உள்ள தகவல்கள் டைனமிக்ஸ் AX 2012 R3 ஐ அடிப்படையாகக் கொண்டவை. இது மற்ற பதிப்புகளுக்கு செல்லுபடியாகலாம் அல்லது செல்லாமலும் இருக்கலாம். (புதுப்பிப்பு: இது டைனமிக்ஸ் 365 ஃபார் ஆபரேஷன்களிலும் வேலை செய்கிறது என்பதை என்னால் உறுதிப்படுத்த முடியும்)
SysOperation கட்டமைப்பில் ஒரு வினவலை எவ்வாறு குறிப்பிடுவது மற்றும் துவக்குவது என்பது குறித்த விவரங்களை நான் எப்போதும் மறந்துவிடுவது போல் தெரிகிறது. நான் செய்து வரும் பெரும்பாலான தொகுதி வேலைகள் பயனர்-கட்டமைக்கக்கூடிய வினவல்களை அடிப்படையாகக் கொண்டவை அல்ல என்று நினைக்கிறேன், ஆனால் அவ்வப்போது நான் அத்தகைய தொகுதி வேலையைச் செய்ய வேண்டியிருக்கிறது, எனவே இந்த இடுகை எனது சொந்த குறிப்புக்காகவும் உள்ளது.
முதலில், தரவு ஒப்பந்த வகுப்பில், வினவல் ஒரு சரத்தில் தொகுக்கப்பட்டு சேமிக்கப்படும். அதன் parm முறை AifQueryTypeAttribute பண்புக்கூறுடன் அலங்கரிக்கப்பட வேண்டும், அது போலவே (இந்த எடுத்துக்காட்டில் நான் SalesUpdate வினவலைப் பயன்படுத்தினேன், ஆனால் நீங்கள் இதை எந்த AOT வினவலுடனும் மாற்றலாம்):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
வினவலை கட்டுப்படுத்தி வகுப்பு தீர்மானிக்க விரும்பினால், நீங்கள் ஒரு வெற்று சரத்தையும் பயன்படுத்தலாம். அந்தச் சூழ்நிலையில், நீங்கள் இரண்டு உதவி முறைகளையும் செயல்படுத்த வேண்டும் (வினவலை அணுக வேண்டியிருக்கும் போது உங்கள் சொந்த வசதிக்காக நீங்கள் எப்படியும் செயல்படுத்த வேண்டியிருக்கும்):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
நீங்கள் வினவலை துவக்க வேண்டும் என்றால் (எடுத்துக்காட்டாக, வரம்புகளைச் சேர்க்கவும்), நீங்கள் initQuery முறையை செயல்படுத்த வேண்டும்:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
இந்த முறையை கட்டுப்படுத்தி வகுப்பிலிருந்து அழைப்பதை உறுதி செய்ய வேண்டும்.