Screen.getPrimary().getVisualBounds().getWidth();
Microsoft AX 2012, X++, C#, SQL server, SSRS, Java, JavaFX, Oracle, PL/SQL, Delphi - codes examples, step-by-step tutorials, experiences.
Thursday, October 18, 2018
Tuesday, October 16, 2018
Thursday, October 11, 2018
AX, SQL SERVER - How to get difference between date and time columns in hours
Suppose this code:
Use this code:
select prodid, fromdate, fromtime, todate, totime from prodroutejob where prodid = '18-044906' and jobtype = 4;..and this result:
prodid fromdate fromtime todate totime -------------------- ----------------------- ----------- ----------------------- ----------- 18-044906 2018-10-08 00:00:00.000 42933 2018-10-08 00:00:00.000 53735 18-044906 2018-10-09 00:00:00.000 31905 2018-10-09 00:00:00.000 39106 18-044906 2018-10-10 00:00:00.000 46033 2018-10-10 00:00:00.000 53234 (3 row(s) affected)How to get difference between FROM and TO in hours ?
Use this code:
select datediff( hour, [start], [end] ) from ( select dateadd( second, a.fromtime, a.fromdate ) as [start], dateadd( second, a.totime, a.todate ) as [end] from prodroutejob a where a.prodid = '18-044906' and a.jobtype = 4 ) aOutput:
diff ----------- 3 2 2 (3 row(s) affected)
Tuesday, October 9, 2018
AX, SQL SERVER - How find released items without assigned document of specified type
Question shows all released items without assigned documents of type PictureDB (=where PictureDB document is missing).
select a.* from ( select itemid, namealias, ( select count(*) from docuref where typeid = 'PictureDB' and reftableid = 175 and refrecid = a.recid ) as count_ from inventtable a where itemid like 'S-653-%' or itemid like 'S-697-' or itemid like 'S-698-' ) a where count_ = 0 order by a.itemidOutput could be:
itemid namealias count_ ---------------------------------------- -------------------- ----------- S-653-000-0001 AIDA ALBERT 792 0 S-653-000-0008 AIDA AJA 5006024259 0 S-653-000-0009 AIDA AVISA5006024257 0
Thursday, October 4, 2018
SQL SERVER - How to get week number
select getdate(), datepart( wk, getdate() )
Output: ----------------------- -----------
2018-10-04 06:32:01.717 40
(1 row(s) affected)
Wednesday, October 3, 2018
DELPHI - How read data from text file divided by semicolon
This example reads two columns from text file saved in this format:
0-0_0_0200;R-IVECO FRANCIE, 57M 0-0_0_2500;KOSTRY/8019-57 MIST 0-00260-X-0_0_0000;PODPĚR. TRUBKA PRAVÁFor storing is used memory table (TdxMemTable, QData):
procedure TFDrawingImportItems.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 ); { only two columns } aSplitted := sRow.Split( [';'], 2 ); QData.Insert; QDataItemid.AsString := aSplitted[0]; QDataname.AsString := aSplitted[1]; QData.Post; end; finally closeFile( f ); QData.EnableControls; Screen.Cursor := crDefault; end; end;Output should be:

Tuesday, September 18, 2018
AX - How to import data from Excel to AX table
This example shows job for import of two columns from Excel to AX table AssetSorting.
static void c_Import_AssetSorting( Args _args ) { SysExcelApplication application; SysExcelWorkbooks workbooks; SysExcelWorkbook workbook; SysExcelWorksheets worksheets; SysExcelWorksheet worksheet; SysExcelCells cells; COMVariantType type; int row = 1; str s1, s2; AssetSorting assetSorting; /* create excel instance */ application = SysExcelApplication::construct(); workbooks = application.workbooks(); /* try to open excel data */ startLengthyOperation(); try { workbooks.open( "c:\\ax\\cz_cpa.xlsx" ); } catch ( Exception::Error ) { endLengthyOperation(); error( strFmt( "@CIE269", "c:\\ax\\cz_cpa.xlsx" ) ); return; } workbook = workbooks.item( 1 ); worksheets = workbook.worksheets(); worksheet = worksheets.itemFromNum( 1 ); cells = worksheet.cells(); /* go throught excel rows, insert data to table */ ttsBegin; do { s1 = cells.item(row, 1).value().bStr(); s2 = cells.item(row, 2).value().bStr(); //info( s1 + " - " + s2 ); /* TYPE is for testing, if we are at end of data */ row++; type = cells.item( row, 1 ).value().variantType(); //if ( row > 500 ) break; if ( !AssetSorting::Exist( s1, AssetSortValue::Sorting2 ) ) { assetSorting.SortCode = AssetSortValue::Sorting2; assetSorting.SortingId = s1; assetSorting.Description = s2; assetSorting.insert(); } else info( "Exists - >" + s1 ); } while ( type != COMVariantType::VT_EMPTY ); ttsCommit; /* end excel */ application.quit(); info( "OK = " + int2str( row ) ); }
Friday, September 14, 2018
AX - How to insert new row based on existing row data in table
This example shows how to duplicate one row data to new row in one table (with update of some values).
static void job_duplicate_row(Args _args) { EmployeeTable_RU tab1, tab2; tab1 = EmployeeTable_RU::findByEmployeeId( '32' ); if ( !tab1 ) { info( "Source row not found." ); return; } ttsBegin; /* copy row data from tab1 to tab2 + change two columns values */ tab2.data( tab1 ); tab2.EmployeeId = '463'; tab2.HcmEmployment = 5637145327; if ( !tab2.validateWrite() ) throw Exception::Error; tab2.insert(); ttsCommit; info( "OK" ); }
Wednesday, September 12, 2018
POWERSHELL - How to close all windows of specified process
This example shows script for closing all processes of "iexplore".
List of these running processes:
List of these running processes:
Get-Process iexploreOutput could be:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 499 46 29208 58308 303 0,45 25512 iexplore 641 54 13280 31924 212 0,31 26804 iexploreHere is the script for killing of this running processes:
# get process (check if exists) $process = Get-Process iexplore -ErrorAction SilentlyContinue # kill it if ( $process ) { echo " -> process found..it will be killed.." $process.Kill() } else { echo " -> process not found.." }Output:
-> process found..it will be killed..
ORACLE - How to find table name by table name substring
You can use CAT table (catalog). It shows to you all object in user profile.
select * from cat where table_name like 'MEN%'Output:
TABLE_NAME TABLE_TYPE ------------------------------ ----------- MENU TABLE MENU_SEQ SEQUENCE MENU_ZAL TABLE
C# - How to add items to TreeView
treeView1.Nodes.Clear(); TreeNode parentNode, node; parentNode = treeView1.Nodes.Add( "Parent item" ); node = parentNode.Nodes.Add( "Child item 1" ); node = parentNode.Nodes.Add( "Child item 2" ); node = parentNode.Nodes.Add( "Child item 3" ); treeView1.ExpandAll();Output:
WIN OS - How check if port is blocked
This commnad will check, if port 1760 is blocked.
netstat -aon | find "1760"Output:
TCP 127.0.0.1:17600 0.0.0.0:0 LISTENING 7944
Tuesday, September 11, 2018
C# - How add values to DataGridView (with source in DataTable)
DataTable table = new DataTable(); table.Columns.Add(new DataColumn( "Text", typeof( string ) ) ); table.Columns.Add(new DataColumn( "Number", typeof( double ) ) ); table.Rows.Add( new object[] { "Value 1", 1 } ); table.Rows.Add( new object[] { "Value 2", 2 } ); table.Rows.Add( new object[] { "Value 3", 3 } ); dataGridView1.DataSource = table;Output:
Monday, September 10, 2018
AX - How check if specified configuration key is enabled
if ( isConfigurationkeyEnabled( configurationKeyNum( Retail) ) ) ...
C# - How add items to ListView with two columns
/* add two new columns */ listView1.Columns.Clear(); listView1.Columns.Add( "Name", 150, HorizontalAlignment.Left ); listView1.Columns.Add( "Detail", 100, HorizontalAlignment.Left ); listView1.View = View.Details; /* enable row selection */ listView1.HideSelection = false; listView1.FullRowSelect = true; /* add three items */ ListViewItem lvi = new ListViewItem( "Item 1" ); listView1.Items.Add( lvi ); lvi.SubItems.Add( "Detail 1" ); lvi.Selected = true; lvi = new ListViewItem( "Item 2" ); listView1.Items.Add( lvi ); lvi.SubItems.Add( "Detail 2" ); lvi = new ListViewItem( "Item 3" ); listView1.Items.Add( lvi ); lvi.SubItems.Add( "Detail 3" ); listView1.Focus();Output:
C# - How add items to ListView
listView1.View = View.List; ListViewItem lvi = new ListViewItem( "Item 1" ); listView1.Items.Add( lvi ); lvi = new ListViewItem( "Item 2" ); listView1.Items.Add( lvi ); lvi = new ListViewItem( "Item 3" ); listView1.Items.Add( lvi );Output:
Friday, September 7, 2018
C# - How change cursor and how to load own cursor
/* set cursor for current form */ Cursor = Cursors.WaitCursor; /* ..with exception for this button */ button1.Cursor = Cursors.Default; /* load own cursor from file; and set it for one button */ Cursor myCursor = new Cursor( @"c:\cursorfilename.cur" ); if ( myCursor != null ) button2.Cursor = myCursor;
DELPHI - How to load own (animated) cursor
There is a several steps:
1) Prepare cursor - here it is animated cursor in file "cursor_busy.ani".
2) Create file with .rc extension, write path to cursor to it.
3) Add link to .rc file to project:
4) Define internal number for own cursor:
5) Load defined cursor to app:
6) Now, when you use this code:
1) Prepare cursor - here it is animated cursor in file "cursor_busy.ani".
2) Create file with .rc extension, write path to cursor to it.
CUR_ANIM 21 "c:\delphi\projects\project_name\cursors\cursor_busy.ani"
3) Add link to .rc file to project:
{$R 'myResources.res' 'myResources.rc'}
4) Define internal number for own cursor:
const crCursor_Busy = 115;
5) Load defined cursor to app:
const
Screen.Cursors[ crCursor_Busy ] := LoadCursor( hInstance, 'CUR_ANIM' );
6) Now, when you use this code:
Screen.Cursor := crCursor_Busy;..you will see this loaded (animated) cursor:
Thursday, September 6, 2018
AX - How read specified note from production order (DocuRefSearch)
static void cieb_GetProdNote(Args _args) { Notes notes = ""; DocuRef docuRefTmp; ProdTable prodTable; DocuRefSearch docuRefSearchTmp; /* - find production order */ prodTable = prodTable::find( "18-037399" ); if ( ! prodTable ) return; /* - read its notes */ docuRefSearchTmp = DocuRefSearch::newCommon( prodTable ); docuRefSearchTmp.parmDocuTypeId( "Poznámka" ); docuRefSearchTmp.init(); if ( docuRefSearchTmp.next() ) { docuRefTmp = docuRefSearchTmp.docuRef(); notes += docuRefTmp.Notes; } /* - show result */ info( notes ); }Output:
C# - How add more items to multiline TextBox
textBox1.Text = null; textBox1.Text += "Row 1\r\n"; textBox1.Text += "Row 2\r\n"; textBox1.Text += "Row 3";Output:
Tuesday, September 4, 2018
AX, SSRS - How to solve error "Type mismatch. Report parameter is of type String, but value is of type Int64"
This error could be shown when you deployed report from VS.
Effective solution was: redeploy SSRS report again from AX AOT tree (..or maybe deploy it from VS with CLEAN step).
Effective solution was: redeploy SSRS report again from AX AOT tree (..or maybe deploy it from VS with CLEAN step).
C# - How to add formatted text to RichTextBox
richTextBox1.Clear(); richTextBox1.SelectionFont = new Font( "Courier New", 10, FontStyle.Bold ); richTextBox1.SelectionColor = Color.Red; richTextBox1.SelectedText = "This "; richTextBox1.SelectionFont = new Font( "Courier New", 15, FontStyle.Bold ); richTextBox1.SelectionColor = Color.Blue; richTextBox1.SelectedText = "is "; richTextBox1.SelectionFont = new Font("Courier New", 20, FontStyle.Bold | FontStyle.Italic); richTextBox1.SelectionColor = Color.Green; richTextBox1.SelectedText = "a text";Output:
C# - How to add items to ListBox from DataTable
DataTable table = new DataTable(); table.Columns.Add( new DataColumn( "Text", typeof( string ) ) ); table.Columns.Add( new DataColumn( "Number", typeof( double ) ) ); table.Rows.Add( new object[] { "Value 1", 1 } ); table.Rows.Add( new object[] { "Value 2", 2 } ); table.Rows.Add( new object[] { "Value 3", 3 } ); listBox1.DisplayMember = "Text"; listBox1.DataSource = table;Output:
C# - How to add items to ListBox
listBox1.Items.Clear(); listBox1.Items.Add( "One" ); listBox1.Items.Add( "Two" ); listBox1.Items.Add( "Three" );, or (from array):
listBox1.Items.Clear(); String[] sArray = { "One", "Two", "Three" }; listBox1.Items.AddRange( sArray );, or
listBox1.DataSource = new string[] { "One", "Two", "Three" };Output:
Subscribe to:
Posts (Atom)