Šogad daudziem Axaptas lietotājiem bija šoks ieraugot, ka dažādās vietās viena un tā pati nedēļa tiek uztverta savādāk. Šeit ir aprakstīta atšķirība starp funkcijām wkOfYr() un weekOfYr(). Arī viena no manām funkcijām, kas noteica nedēļas pirmo/pēdējo datumu strādāja nepareizi un nācās to pārtaisīt. Problēma ir tur, ka gada pirmā nedēļa ir tā, kurā ietilpst ceturdiena, līdz ar to 2010. gadā 1.janvāris atradās 2009. gada 53 nedēļā. Funkcijā ir cikls – šinī sakarā droši vien būs janoklausās kaut kādi optimizācijas ieteikumi.
Lasīt vairāk…
Ja esat aktīvs Dynamics Ax 3.0 (Axapta) lietotājs, piemēram, programmētājs, tad rodas situācijas, kad Axapta klients rada kļūdas savā darbībā un aizveras. Tas, iespējams, notiek dēļ Axapta klienta keša, kurā saglabātās aplikācijas objektu versijas neatbilst reālajām. Šādos gadījumos ir jāizdzēš šie keša faili. Es to daru ar *.bat failu:
del “C:\Documents and Settings\%username%\Local Settings\Application Data\*.aoc”
pause
Situācija tāda, ka nav standarta veida kā atlasīt unikālu ierakstu skaitu Axaptā. Tad viens variants, kā atrisināt šo problēmu ir izmantot klasi SqlStatementExecutePermission(AX4.0), lai izpildītu SQL. SQLā savukārt ir atslēgas vārds DISTINCT, kas nodrošina unikālu ierakstu atlasīšanu.
1) Vispirms izveido jaunu klasi, piemēram, Class1, kas izpildās servera pusē (Run on: Server) ar statisku metodi ‘recordCount’:
static int recordCount(Str _query)
{
Connection connection = new Connection();
Statement statement = connection.createStatement();
ResultSet resultSet;
SqlStatementExecutePermission permission;
int result;
;
permission = new SqlStatementExecutePermission(_query);
permission.assert();
resultSet = statement.executeQuery(_query);
if (resultSet.next())
{
result = resultSet.getInt(1);
}
return result;
}
2) Un šinī piemērā izveidosim jaunu job:
static void stma1_CountDistinct(Args _args)
{
str query = @"SELECT COUNT(DISTINCT RECID) FROM EMPLTABLE WHERE DATAAREAID='%1' AND CITY='%2'";
int ret;
;
query = strfmt(query, CurExt(), 'Liepāja');
print Class1::recordCount(query);
pause;
}
Tie kas saprot SQL uzreiz redz, kas te notiek. Respektīvi, no tabulas EmplTable tika atlasīti tikai tie ieraksti, kuriem City ir Liepāja. Savukārt mūsu metode RecordCount atgrieza šo ierakstu skaitu. Protams šo triviālo situāciju varēja atrisināt citādāk, bet ja skaitāmais lauks nebūtu RecId, tad būtu jāveido cikls, lai saskaitītu cik unikālu ierakstu ir bijis.
Jaunākie komentāri