Form için:
SysQuery::findOrCreateRange(B_RMAOutTable_DS.query().dataSourceTable(tablenum(B_RMAOutTable)), fieldnum(B_RMAOutTable,RMAIn)).
value(QueryValue(NoYes::Yes));
Report için:
SysQuery::findOrCreateRange(this.query().dataSourceTable(tablenum(SMAServiceOrderTable)),
fieldnum(SMAServiceOrderTable,ItemSerialNum)).
value(sysquery::valueNotEmptyString());
Run methoduna super'den önce yazabilirsiniz.
Blog Listem
29 Kasım 2012 Perşembe
27 Kasım 2012 Salı
If ve like
Axapta'da like operatörü sadece sql - select cümleciklerinde değil, if komutunda da kullanılabilir:
if (ItemId like "WX*")
if (ItemId like "WX*")
5 Kasım 2012 Pazartesi
AXAPTA - Excel Import
void clicked()
{
SysExcelApplication application;
SysExcelWorkbooks workbooks;
SysExcelWorkbook workbook;
SysExcelWorksheets worksheets;
SysExcelWorksheet worksheet;
SysExcelCells cells;
COMVariantType type;
int row;
str line;
Filename Filename;
;
super();
Filename = WinApi::getOpenFileName(element.hWnd(),['XLS dosyaları','*.xls'],"","Serino dosyası");
if (!Filename)
return;
application = SysExcelApplication::construct();
workbooks = application.workbooks();
try
{
workbooks.open(filename,0,true);
}
catch (Exception::Error)
{
throw error(strfmt("Dosya açılamıyor: %1",Filename));
}
element.lock();
workbook = workbooks.item(1);
worksheets = workbook.worksheets();
worksheet = worksheets.itemFromNum(1);
cells = worksheet.cells();
do
{
row++;
type = cells.item(row+1,1).value().variantType();
switch(cells.item(row,1).value().variantType())
{
case COMVariantType::VT_BSTR:
line = cells.item(row,1).value().bStr();
break;
case COMVariantType::VT_DECIMAL, COMVariantType::VT_R4, COMVariantType::VT_R8:
line = strfmt("%1",any2int(cells.item(row,1).value().double()));
break;
case COMVariantType::VT_I1, COMVariantType::VT_I2, COMVariantType::VT_I4:
line = strfmt("%1",cells.item(row,1).value().int());
break;
case COMVariantType::VT_UI1, COMVariantType::VT_UI2, COMVariantType::VT_UI4:
line = strfmt("%1",cells.item(row,1).value().uLong());
break;
case (COMVariantType::VT_DATE):
line = date2str(cells.item(row,1).value().date(),123,2,1,2,1,4);
case COMVariantType::VT_EMPTY:
line ="";
break;
default:
line="";
}
if (Line != "")
element.insertSerial(line);
}
while (type != COMVariantType::VT_EMPTY);
application.quit();
element.unLock();
}
{
SysExcelApplication application;
SysExcelWorkbooks workbooks;
SysExcelWorkbook workbook;
SysExcelWorksheets worksheets;
SysExcelWorksheet worksheet;
SysExcelCells cells;
COMVariantType type;
int row;
str line;
Filename Filename;
;
super();
Filename = WinApi::getOpenFileName(element.hWnd(),['XLS dosyaları','*.xls'],"","Serino dosyası");
if (!Filename)
return;
application = SysExcelApplication::construct();
workbooks = application.workbooks();
try
{
workbooks.open(filename,0,true);
}
catch (Exception::Error)
{
throw error(strfmt("Dosya açılamıyor: %1",Filename));
}
element.lock();
workbook = workbooks.item(1);
worksheets = workbook.worksheets();
worksheet = worksheets.itemFromNum(1);
cells = worksheet.cells();
do
{
row++;
type = cells.item(row+1,1).value().variantType();
switch(cells.item(row,1).value().variantType())
{
case COMVariantType::VT_BSTR:
line = cells.item(row,1).value().bStr();
break;
case COMVariantType::VT_DECIMAL, COMVariantType::VT_R4, COMVariantType::VT_R8:
line = strfmt("%1",any2int(cells.item(row,1).value().double()));
break;
case COMVariantType::VT_I1, COMVariantType::VT_I2, COMVariantType::VT_I4:
line = strfmt("%1",cells.item(row,1).value().int());
break;
case COMVariantType::VT_UI1, COMVariantType::VT_UI2, COMVariantType::VT_UI4:
line = strfmt("%1",cells.item(row,1).value().uLong());
break;
case (COMVariantType::VT_DATE):
line = date2str(cells.item(row,1).value().date(),123,2,1,2,1,4);
case COMVariantType::VT_EMPTY:
line ="";
break;
default:
line="";
}
if (Line != "")
element.insertSerial(line);
}
while (type != COMVariantType::VT_EMPTY);
application.quit();
element.unLock();
}
15 Ekim 2012 Pazartesi
AXAPTA - Client Arabelleğini Temizleme
Bazen yeni yazdığınız kodlar client'i resetleseniz bile client tarafında görünmeyebilir. Bu durumda client bilgisayarında aşağıdaki kodları çalıştırmanız işe yarayabilir:
xSession::removeAOC();
SysTreeNode::refreshAll();
SysFlushDictionary::doFlush();
SysFlushAOD::doFlush();
xSession::updateAOC();
xSession::removeAOC();
SysTreeNode::refreshAll();
SysFlushDictionary::doFlush();
SysFlushAOD::doFlush();
xSession::updateAOC();
9 Ekim 2012 Salı
AXAPTA - Empty compound statement uyarısı
Axapta derleme esnasında bu uyarıyı verir. Boş blokları temizleyerek bu uyarıdan kurtulunabilir. Ancak Try/Catch bloğunda bunu yapamazsınız. Bu durumda ne yapacaksınız?
Uyarıyı kaldırmaktan başka bir işlevi olmayan bu fonksiyonu bir blogdan buldum.
catch (Exception::Error)
{
exceptionTextFallThrough();
}
Uyarıyı kaldırmaktan başka bir işlevi olmayan bu fonksiyonu bir blogdan buldum.
8 Ekim 2012 Pazartesi
AXAPTA client ve server için ayrı ayrı bugünün tarihi
Bugünün datetime değerinin fonksiyonunu daha önce de vermiştim, ancak o sadece client içindi. Client ve server için ayrı ayrı:
warning(strfmt("Client datetime değeri: %1",DatetimeUtil::getSystemDateTime()));
warning(strfmt("Server datetime değeri: %1",DatetimeUtil::utcNow()));
warning(strfmt("Client datetime değeri: %1",DatetimeUtil::getSystemDateTime()));
warning(strfmt("Server datetime değeri: %1",DatetimeUtil::utcNow()));
12 Eylül 2012 Çarşamba
Axapta if ve parantez
Aşağıdaki blok hatalı mı?
if (_ServiceShipment == B_SMAServiceShipment::B_Hand)
{
if (!Personels.WithHand)
continue;
}
if (_ServiceShipment == B_SMAServiceShipment::B_Hand)
if (!Personels.WithHand)
continue;
Ben hatalı olmadığını düşünüyodum. Çünkü ikinci if komutunun da continue ile birlikte tek komut olarak alınacağını sanıyordum. Ama öyle değilmiş. Parantez gerekiyor:if (!Personels.WithHand)
continue;
if (_ServiceShipment == B_SMAServiceShipment::B_Hand)
{
if (!Personels.WithHand)
continue;
}
4 Haziran 2012 Pazartesi
AXAPTA - Kontrolün lookup buttonunu gizlemek
Bir kontrolün lookup buttonu gizlemek için:
DSerial.lookupButton(FormLookupButton::Never);
DSerial.lookupButton(FormLookupButton::Never);
20 Nisan 2012 Cuma
AXAPTA - Common DLL kullanımı
Öncelikle DLL dosyasını Program Files altındaki Axapta klasöründe Client\Bin altına atın. Benim bilgisayarımda bu klasörün adı:
C:\Program Files (x86)\Microsoft Dynamics AX\50\Client\Bin\
Arg methodu ile extTypes enum ile parametre tipleri belirtilir. Kullanımı:
}
C:\Program Files (x86)\Microsoft Dynamics AX\50\Client\Bin\
Arg methodu ile extTypes enum ile parametre tipleri belirtilir. Kullanımı:
void Test()
{
DLL testDll;
DLLFunction test;
;
testDll = new DLL("MyTestDLL.dll");
test = new DLLFunction(printDLL, "MyTestingMethod");
test.arg(extTypes::Word ,extTypes::String);
test.call(12345,"ABCDE");{
DLL testDll;
DLLFunction test;
;
testDll = new DLL("MyTestDLL.dll");
test = new DLLFunction(printDLL, "MyTestingMethod");
test.arg(extTypes::Word ,extTypes::String);
}
6 Nisan 2012 Cuma
AXAPTA - ascii yazdırma ve string boyu
mylen = StrLen("benim deneme stringim...");
alfabenin_ilk_harfi = num2char(65);
alfabenin_ilk_harfi = num2char(65);
AXAPTA - Global fonksiyon tanımlama
Static methodunuzu AOT->classes->Global sınıfına ekleyin:
public static void Test()
{
;
info("my global function");
}
***
static void TestMyGlobalFunction(Args _args)
{
;
test();
}
public static void Test()
{
;
info("my global function");
}
***
static void TestMyGlobalFunction(Args _args)
{
;
test();
}
AXAPTA - stringi trim etmek
static void Job47(Args _args)
{
str a;
;
a=StrRtrim("fdssf ");
a=StrLtrim(" fdssf");
}
{
str a;
;
a=StrRtrim("fdssf ");
a=StrLtrim(" fdssf");
}
7 Şubat 2012 Salı
AXAPTA Validate işleminde tek komutta mesaj verip false değer döndürmek
Checkfailed fonksiyonu bu işi yapıyor. Böylece iki satırda yapılabilecek bir işlem tek satıra iniyor.
if (b_SerialTrans.RefType !=B_SerialRefType::ServiceObjectRelation)
return checkFailed("Bu kayıt silinemez!..");
if (b_SerialTrans.RefType !=B_SerialRefType::ServiceObjectRelation)
return checkFailed("Bu kayıt silinemez!..");
Kaydol:
Kayıtlar (Atom)