boolean bManualRunning = (BatchHeader::isExecutingInBatch() == false );
Code Example Center
Microsoft AX 2012, X++, C#, SQL server, SSRS, Java, JavaFX, Oracle, PL/SQL, Delphi - codes examples, step-by-step tutorials, experiences.
Monday, January 13, 2025
ax - How to check if the class is running in the batch mode ?
Wednesday, December 18, 2024
ax - How to find type used for specified Number Sequence ?
Searching for the data type for the sequence Time_6:
select datatypeid from NUMBERSEQUENCEDATATYPE where recid = ( select NUMBERSEQUENCEDATATYPE from NumberSequenceReference where NUMBERSEQUENCEID = ( select recid from NumberSequencetable where NUMBERSEQUENCE = 'Time_6' ) )Output:
datatypeid ----------- 8374Then job in AX:
static void Job8(Args _args) { info( extendedTypeId2name( 8374 ) ); }Output:
Thursday, August 8, 2024
SSRS - How to add stripline to chart
The stripline is in this example defined on X axis.
PS: Better variant is to use SSRS function CountDistinct() - solves problem with gaps in axis values:
Remember: the value for StartWith is order of the axis value, not exact value (StartWidth):
=DatePart("ww", today(), FirstDayOfWeek.Monday, FirstWeekOfYear.System ) -min(Fields!skp.Value)).
=CountDistinct( IIF(Fields!skp.Value <= DatePart("ww", today(), FirstDayOfWeek.Monday, FirstWeekOfYear.System ), Fields!skp.Value, nothing) )
Thursday, July 18, 2024
ax - How to get ItemId by ExternalItemId for specified customer
CustVendExternalItem custVendExternalItem; ItemId itemId; ... itemId = ""; custVendExternalItem = CustVendExternalItem::findExternalItemId( ModuleInventPurchSalesVendCustGroup::Cust, "COMPANYID", sExternalItemId ); if ( custVendExternalItem != null ) itemId = custVendExternalItem.ItemId;
Friday, June 21, 2024
SSRS - How to get first and last day in month
These are useful functions, for example for parameter filling:
First and last day of this month:
First and last day of this month:
=dateadd("m",0,dateserial(year(Today),month(Today),1)) =dateadd("m",1,dateserial(year(Today),month(Today),0))First and last day of last month:
=dateadd("m",-1,dateserial(year(Today),month(Today),1)) =dateadd("m",0,dateserial(year(Today),month(Today),0))First and last day of next month:
=dateadd("m",1,dateserial(year(Today),month(Today),1)) =dateadd("m",2,dateserial(year(Today),month(Today),0))
Monday, June 17, 2024
c - How to solve error UNRESOLVED EXTERNAL SYMBOL for static class field
.h
.cpp
class OverloadedOperator {
public:
string name;
float price;
static int n;
};
The problem could be in missing static field initialization in .cpp file. Should be:
.cpp
#include "OverloadedOperator.h"
int OverloadedOperator::n = 0;
Thursday, May 2, 2024
sql server - How to check used count of decimal places in the field
select prodid, remaininventphysical, len(replace( rtrim( replace( convert( varchar, remaininventphysical), '0', ' ' ) ), ' ', '0' ) ) - charindex( '.', replace( rtrim( replace( convert( varchar, remaininventphysical ), '0', ' ' ) ), ' ', '0' ) ) as nonzerodecimalplacesused from PRODBOM order by prodid;Output:
prodid remaininventphysical nonzerodecimalplacesused -------------------- --------------------------------------- ------------------------ 24-015377 0.0600060006000600 14 24-015376 0.0800000000000000 2 24-014563 0.0450045004500450 15 24-013446 0.0450045004500450 15 24-013445 0.0000000000000000 0 24-011934 0.0000000000000000 0 24-008828 0.0000000000000000 0 24-008602 0.0000000000000000 0 24-006598 0.0000000000000000 0 23-039521 0.0000000000000000 0
Thursday, March 21, 2024
c_c++ - How to check DLL architecture (x86 vs x64)
From VS terminal run this command:
dumpbin /headers clib.dllOutput:
Dump of file clib.dll
PE signature found
File Type: DLL
FILE HEADER VALUES
8664 machine (x64)
A number of sections
65FA9AE8 time date stamp Wed Mar 20 09:14:32 2024
0 file pointer to symbol table
0 number of symbols
F0 size of optional header
2022 characteristics
Executable
Application can handle large (>2GB) addresses
DLL
c_c++ - How to check entry points of the DLL
From VS terminal run this command:
dumpbin /exports clib.dllOutput, you can see two entry points:
Dump of file clib.dll File Type: DLL Section contains the following exports for CLib.dll 00000000 characteristics FFFFFFFF time date stamp 0.00 version 1 ordinal base 2 number of functions 2 number of names ordinal hint RVA name 1 0 00011249 add = @ILT+580(add) 2 1 000110BE subtract = @ILT+185(subtract) Summary 1000 .00cfg 1000 .data 1000 .idata 1000 .msvcjmc 3000 .pdata 3000 .rdata 1000 .reloc 1000 .rsrc 8000 .text 10000 .textbss
Tuesday, January 16, 2024
c# - How to use LINQ aggregate() function
This calling performs SUM on Population (with starting value = 0.)
public List<Country> Countries = new(); ... this.Countries.Add( new Country( "Czech", Country.ContinentEnum.EUROPE, 10 ) ); this.Countries.Add( new Country( "Poland", Country.ContinentEnum.EUROPE, 40 ) ); this.Countries.Add( new Country( "China", Country.ContinentEnum.ASIA, 1100 ) ); this.Countries.Add( new Country( "USA", Country.ContinentEnum.AMERICA, 340 ) ); ... int total = this.Countries.Aggregate( 0, (total,b) => total + b.Population ); MessageBox.Show( total.ToString() ); // -> 1490
Thursday, November 30, 2023
c# - How to call custom event
1) Custom event without parameters:
public Action OnBeforeEvaluationEvent; ... if ( OnBeforeEvaluationEvent != null ) OnBeforeEvaluationEvent();2) Custom event with parameter(s):
public delegate void OnAfterEvaluatingDelegate( CodeConditionGroup _conditionGroup ); public event OnAfterEvaluatingDelegate OnAfterEvaluationgEvent; if ( OnAfterEvaluationgEvent != null ) OnAfterEvaluationgEvent( condition );
Friday, November 24, 2023
c#, devexpress - How to make master-detail relation on non-DB objects (List generic )
List<TmpParent> list = new List<TmpParent>(); List<TmpChild> listChildExternal = new List<TmpChild>();Initial data filling:
var p = new TmpParent( "A", "A", true ); p.listInner.Add( new TmpChild() ); list.Add( p ); list.Add( new TmpParent( "B", "B", false, TypeEnum.OPERATOR ) ); list.Add( new TmpParent( "C", "C", true ) ); list.Add( new TmpParent( "D", "D", false ) ); listChildExternal.Add( new TmpChild() { str1="C", str2 = "child1" } ); listChildExternal.Add( new TmpChild() { str1="C", str2 = "child1.1" } ); listChildExternal.Add( new TmpChild() { str1="B", str2 = "child1.2" } ); gridParent.DataSource = list; // masterFind and show detail data:
- First detail list for inner list.
- Second detail list for external list connected with relation.
private void gridViewParent_FocusedRowChanged( object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e ) { if ( e.FocusedRowHandle >= 0 ) { TmpParent master = gridView1.GetRow( e.FocusedRowHandle ) as TmpParent; if ( master != null ) { /* A] try to find in inner list */ gridDetail.DataSource = master.listInner; /* B] try to find in external list */ gridChildExternal.DataSource = listChildExternal.Where( x => x.str1 == master.str1 ).ToList(); } } }First grid=master, second grid=detail internal list, third grid=detail external list.
Tuesday, November 14, 2023
c#, devexpress - How to use attributes in GridControl (devexpress)
The attributes in the class can be used as metadata for generated GridControl (devexpress) columns.
Class for rows:
public enum TypeEnum { [Display(Name = "Type is expression.")] EXPRESSION = 0, [Display(Name = "Type is operator.")] OPERATOR = 1 } public class TmpParent { [Display( ShortName = "Company", Name = "Company Name", Description = "The amount of currently available product", AutoGenerateFilter = false) ] public string str1 { get; set; } [DataType(DataType.Text), StringLength(20, MinimumLength = 3)] public string str2 { get; set; } public bool bool1 { get; set; } public TypeEnum enum1 { get; set; } [DisplayFormat(DataFormatString = "MMMM/yyyy")] public DateTime date1 { get; set; } [DisplayFormat(DataFormatString = "p", ApplyFormatInEditMode = true)] public float value1 { get; set; } [DataType(DataType.Currency), Range(200, 5000), Required] public float value2 { get; set; } public TmpParent( string _s1, string _s2, bool _b, TypeEnum _enum = TypeEnum.EXPRESSION ) { str1 = _s1; str2 = _s2; bool1 = _b; enum1 = _enum; date1 = DateTime.Now; value1 = 100.1f; value2 = 300.5f; } }Grid fillings:
var p = new TmpParent( "A", "A", true ); list.Add( p ); list.Add( new TmpParent( "B", "B", false, TypeEnum.OPERATOR ) ); list.Add( new TmpParent( "C", "C", true ) ); list.Add( new TmpParent( "D", "D", false ) ); gridParent.DataSource = list;Output:
Monday, October 23, 2023
delphi - How to work with generic TArray
Using generic TArray with String type.
procedure TFDrawingRelease.doReading; var f : TextFile; sRow : string; aSplitted: TArray<string>; begin { -- delete all rows } if QData.Active then begin QData.Close; QData.Open; end; { -- open file and read data (two columns divided by ";") } AssignFile( f, EFileName.Text ); try Screen.Cursor := crHourGlass; QData.DisableControls; reset( f ); while not eof( f ) do begin readln( f, sRow ); aSplitted := sRow.Split( [';'], 2 ); QData.Insert; { ..and return to first char _ } QDataItemid.AsString := aSplitted[0].Split( [ '_' ], 1 )[0]; QDataName.AsString := aSplitted[1]; QData.Post; end; finally closeFile( f ); QData.EnableControls; Screen.Cursor := crDefault; end; SetButtons; end;
Wednesday, September 6, 2023
ax - How to call new form and modify its grid filter
Args args; FormRun formRun; Query query; My_VM_Resources table; FormDataSource formDataSource = new FormDataSource(); super(); // call the new form args = new Args(); formRun = new menufunction( menuItemDisplayStr( WrkCtrCapRes ), MenuItemType::Display ).create( args ); formRun.init(); formDataSource = formRun.dataSource(); formRun.run(); table = My_VM_Resources_ds.cursor(); formDataSource.filter( fieldNum(WrkCtrCapRes, WrkCtrId), /*"5210*"*/table.my_resource_mask ); formRun.detach(); formRun.wait();
Wednesday, August 30, 2023
Wednesday, July 12, 2023
c# - LINQ max() and empty list - how to solve
int iMaxLevel = this.Items.Any() ? this.Items.Max( x => x.Level ) : 0;
Monday, May 22, 2023
oracle - How to alter sequence next number
DROP SEQUENCE MENU_SEQ;
create sequence MENU_SEQ
minvalue 1
maxvalue 999999999999999999999
start with 18456
increment by 1
cache 20;
Friday, April 21, 2023
ax - How to find plan version by name
if ( this.RefType == WrkCtrCapRefType::PlannedOrder ) {
reqPO = ReqPO::find(
ReqPlanVersion::findReqPlanId( "MAIN", "company", NoYes::Yes, false ).RecId,
this.refId, false );
if ( reqPO ) return reqPO.ItemId;
}
Friday, April 14, 2023
c# - How to solve problem on TEST project with error on referenced project
The problem with the referenced project error can be solved with this change:
Thursday, February 16, 2023
Monday, January 30, 2023
c# - How to save List into text file
public ListCodeLogOnlyList = new(); ... await System.IO.File.WriteAllLinesAsync( _filename, this.CodeLogOnlyList );
Friday, January 20, 2023
c# - How to access to parent form (for form)
itemWebLink.Web.KeyDown += ((FMain)this.ParentForm).Web_KeyDown;
c# - How applicate LINQ WHERE and FOREACH
this.ConditionGroups.Where( x => x.Active == true ).ToList().ForEach( condition => { ... } );
Wednesday, January 11, 2023
sql server - How to call exec proc and show its result
declare @i int; exec @i = users_exists 'worker01'; print @i;Output:
0
Subscribe to:
Posts (Atom)