RSS

Etiket arşivi: search filter memo field dynamics ax

Dynamics AX memo türünde alanlarında arama yapmak

Merhaba,

Dynamics AX içinde Memo türünde olan string alanlarda arama/filtreleme yapmak imkansızdır. Fakat bu alandaki bir metni aramak zorundaysak bunun için bir yol var. AX içinde ilgili memo alanı için arama yapılamazken, ilgili tablonun ve alanın SQLdeki karşılığında AX içerisinden yazılacak bir kodla arama yapılabilir. Aramanın geri dönüş yapmak istediğiniz işleme göre değişebilir.

Aşağıdaki kod örneğinde gönderdiğim arama metine uyan satırların RECID değerleri bulunup geri dönderilmektedir.


// Changed on 09 Tem 2011 at 17:56:38 by mesut
//TABLENAME must be replaced by real table name contains Memo field.
public static server container searchText(TABLENAME _table,SearchString _searchText)
{
str                             sql;
Connection                      userConnection;
SqlStatementExecutePermission   permission;
Statement                       stmt;
ResultSet                       sqlres;
SqlSystem                       sqlSystem = new SqlSystem();
SysSQLSystemInfo                systemInfo =  SysSQLSystemInfo::construct();
container                       cRecId;
int                             i=1;
;

cRecId = conNull();
//Setup the connection needed to send the command to SQL Server.
userConnection = new Connection();
stmt = userConnection.createStatement();

//BP Deviation Documented
sql = "select RecId from [%1].[DBO].[%2] where %3 like '%%4%' and %5 = %6";

sql = strfmt(sql,
systemInfo.getloginDatabase(),
ReleaseUpdateDB::backendTableName(tablenum(TABLENAME)),
ReleaseUpdateDB::backendFieldName(tablenum(TABLENAME), fieldnum(TABLENAME,MEMOFIELDNAME)),
_searchText,
ReleaseUpdateDB::backendFieldName(tablenum(TABLENAME ), fieldnum(TABLENAME,MEMOFIELDNAME)),
sqlSystem.sqlLiteral(_table.DataAreaId));

//info(sql);
permission = new SqlStatementExecutePermission(sql);
permission.assert();

//BP Deviation Documented
sqlres = stmt.executeQuery(sql);

//Select queries record
while( sqlres.next())
{
cRecId = conIns(cRecId,i,sqlres.getInt64(1));
i++;
}
CodeAccessPermission::revertAssert();
return cRecId;

}

NOT: Yazıda belirtilen kodun, değiştirilmeden veya değiştirilerek, development/test/canlı ortamlarında kullanılması sonucu oluşabilecek olumlu/olumsuz durumlarda tüm sorumluluk kodu kullanan kişiye aittir.

Mesut BOZTAŞ

Dynamics AX ERP Danışmanı ve
İstanbul Ticaret Üni. Y.Lisans öğrencisi

İstanbul 2011

http://www.etg-it.com

 
Yorum yapın

Yazan: 10/07/2011 in Geliştirme

 

Etiketler:

 
%d blogcu bunu beğendi: