Blog Listem
17 Temmuz 2014 Perşembe
AX 2012 - SSRS Report Geliştirirken Visual Studio Tablo Penceresi Kaybolursa?
View->Report Data
AX 2012 - VendInvoiceInfoTable Yeni Eklediğim Alanın Değeri Güncellemede Kayboluyor
VendInvoiceInfoTable tablosuna yeni bir alan ekledim. VendEditInvoice formu ile kaydı güncellemek istediğimde tabloya yeni eklediğim alanın içinin boş geldiğini gördüm. Uzun uğraşlar sonunda bu formun aslında kaydı yeni bir kayda kopyaladığını ve bu işlem esnasında beni alanımı da atladığını farkettim. Axapta kaydı kopyalarken copyFromHeader isimli tablo metodunu kullanıyor. Araya kendi satırımı ekledim:
this.VendorRequestedWorkerEmail = _header.VendorRequestedWorkerEmail;
//benim yeni alanım
this.myNewField = _header.myNewField;
sorun düzeldi. Bu tablonun satır tablosu VendInvoiceInfoLine da aynı şekilde çalışıyor.
this.VendorRequestedWorkerEmail = _header.VendorRequestedWorkerEmail;
//benim yeni alanım
this.myNewField = _header.myNewField;
sorun düzeldi. Bu tablonun satır tablosu VendInvoiceInfoLine da aynı şekilde çalışıyor.
Etiketler:
2012,
alan,
ax,
AXAPTA,
field,
güncellenme,
sorun,
vendinvoiceinfotable,
yeni
AX - 2012 TypeId Yerine Ne Geldi?
AX 2012'de TypeId fonksiyonunun çalışmadığını göreceksiniz. AX 2012'de bunun yerine enumlar için EnumStr, diğer veri tipleri için de ExtendedTypeStr kullanabilirsiniz.
11 Temmuz 2014 Cuma
AX 2012 - SSRS RDP Rapora Seçili Kayıtları Göndermek
SSRS DP Class parm metod olarak tablo ve container kabul etmiyor. Forumlarda biraz araştırdım ve str tipi veri göndermenin tavsiye edildiğini gördüm. Ancak bu çok da iyi bir yaklaşım değildi. En sonunda doğru metodun mevcut AX 2012 raporları içinde zaten bulunduğunu öğrendim. Linkte verdiğim PDF dosyasında çek raporunda bunun kullanıldığı anlatılıyordu. ChequeDP ve ChequeController classlarını inceleyerek aşağıdaki raporu yazdım:
Controller class:
class declaration:
class myController extends SrsReportRunController
{
#define.ReportName('myreport.Report')
myTMPTable myTMPTable;
}
public static void main(Args _args)
{
SysLastValue SysLastValue;
myController controller = new myController();
controller.parmReportName(#ReportName);
controller.parmArgs(_args);
controller.DeleteTmpData();
controller.init();
controller.startOperation();
}
protected void prePromptModifyContract()
{
SrsTmpTblMarshallerContract contract = this.parmReportContract().parmRdpContract() as SrsTmpTblMarshallerContract;
new SRSReportRunPermission().assert();
contract.parmTmpTableDataRecId(SRSTmpTblMarshaller::SendTmpTblToDataProvider(myTMPTable));
}
public void init()
{
FormDataSource ds;
TransDate transDate;
VendTrans vendTrans;
if (!this.parmArgs() ||
!this.parmArgs().record() ||
this.parmArgs().dataset() != tableNum(VendTrans))
throw error("Rapor uygun bir parametreyle çağrılmalıdır!..");
ds = this.parmArgs().record().dataSource();
vendTrans = ds.getFirst(1);
transDate = vendTrans.transDate;
PaymentReceipt.VendAccount = vendTrans.AccountNum;
for (vendTrans = ds.getFirst(1); vendTrans != null; vendTrans = ds.getNext())
{
myTMPTable.Date = vendTrans.TransDate;
...
myTMPTable.insert();
}
}
DP Class:
// <ETG - memre > GN: T: 11.07.2014 A:
[SRSReportParameterAttribute(classStr(SrsTmpTblMarshallerContract))]
public class mpDP extends SRSReportDataProviderBase
{
myTMPTAble myTMPTable;
}
private void initTmpTable()
{
SrsTmpTblMarshallerContract contract = this.parmDataContract() as SrsTmpTblMarshallerContract;
new SRSReportRunPermission().assert();
myTMPTable = SRSTmpTblMarshaller::getTmpTbl(contract.parmTmpTableDataRecId());
SRSTmpTblMarshaller::deleteTmpTblData(contract.parmTmpTableDataRecId());
CodeAccessPermission::revertAssert();
}
public void processReport()
{
CompanyInfo Company;
VendTable vendTable;
AmountMST amount;
TempStr NumtoTxt;
LedgerJournalTrans LedgerTrans;
this.initTmpTable();
...
}
Controller class:
class declaration:
class myController extends SrsReportRunController
{
#define.ReportName('myreport.Report')
myTMPTable myTMPTable;
}
public static void main(Args _args)
{
SysLastValue SysLastValue;
myController controller = new myController();
controller.parmReportName(#ReportName);
controller.parmArgs(_args);
controller.DeleteTmpData();
controller.init();
controller.startOperation();
}
protected void prePromptModifyContract()
{
SrsTmpTblMarshallerContract contract = this.parmReportContract().parmRdpContract() as SrsTmpTblMarshallerContract;
new SRSReportRunPermission().assert();
contract.parmTmpTableDataRecId(SRSTmpTblMarshaller::SendTmpTblToDataProvider(myTMPTable));
}
public void init()
{
FormDataSource ds;
TransDate transDate;
VendTrans vendTrans;
if (!this.parmArgs() ||
!this.parmArgs().record() ||
this.parmArgs().dataset() != tableNum(VendTrans))
throw error("Rapor uygun bir parametreyle çağrılmalıdır!..");
ds = this.parmArgs().record().dataSource();
vendTrans = ds.getFirst(1);
transDate = vendTrans.transDate;
PaymentReceipt.VendAccount = vendTrans.AccountNum;
for (vendTrans = ds.getFirst(1); vendTrans != null; vendTrans = ds.getNext())
{
myTMPTable.Date = vendTrans.TransDate;
...
myTMPTable.insert();
}
}
DP Class:
// <ETG - memre > GN: T: 11.07.2014 A:
[SRSReportParameterAttribute(classStr(SrsTmpTblMarshallerContract))]
public class mpDP extends SRSReportDataProviderBase
{
myTMPTAble myTMPTable;
}
private void initTmpTable()
{
SrsTmpTblMarshallerContract contract = this.parmDataContract() as SrsTmpTblMarshallerContract;
new SRSReportRunPermission().assert();
myTMPTable = SRSTmpTblMarshaller::getTmpTbl(contract.parmTmpTableDataRecId());
SRSTmpTblMarshaller::deleteTmpTblData(contract.parmTmpTableDataRecId());
CodeAccessPermission::revertAssert();
}
public void processReport()
{
CompanyInfo Company;
VendTable vendTable;
AmountMST amount;
TempStr NumtoTxt;
LedgerJournalTrans LedgerTrans;
this.initTmpTable();
...
}
2 Temmuz 2014 Çarşamba
AX 2012 - Bir forma ledger dimension (muhasebe boyutu) için segmented entry kontrol eklemek
Direk eklediğinizde lookup vs.. düzgün çalışmadığını göreceksiniz. Yapmanız gerekenler aşağıdaki Microsoft linkinde:
http://msdn.microsoft.com/en-us/library/hh300644.aspx
http://msdn.microsoft.com/en-us/library/hh300644.aspx
Kaydol:
Kayıtlar (Atom)