E10 10.0.700.4 Job Entry Adapter

Ok, I finally got it working on my own. For anyone wanting a working example of using an adapter in E10...(there may be better ways or more 'correct' code out there)

I started out with a fresh customization (base only) and redid the code from scratch and cleaned up the code that edits the jobhead and this now works with no errors at all.


// **************************************************
// Custom code for JobClosingForm
// Created: 6/16/2015 13:13:14
// **************************************************
using System;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Windows.Forms;
using Erp.UI;
using Ice.Lib.Customization;
using Ice.Lib.ExtendedProps;
using Ice.Lib.Framework;
using Ice.Lib.Searches;
using Ice.UI.FormFunctions;
using Erp.Adapters;

public class Script
{
// ** Wizard Insert Location - Do Not Remove 'Begin/End Wizard Added Module Level Variables' Comments! **
// Begin Wizard Added Module Level Variables **


// End Wizard Added Module Level Variables **

// Add Custom Module Level Variables Here **

private EpiDataView edvJobHead;
private EpiBaseAdapter oTrans_adapter;

public void InitializeCustomCode()
{
// ** Wizard Insert Location - Do not delete 'Begin/End Wizard Added Variable Initialization' lines **
// Begin Wizard Added Variable Initialization

this.JobClosing_Column.ColumnChanged += new DataColumnChangeEventHandler(this.JobClosing_BeforeFieldChange);

// End Wizard Added Variable Initialization

this.edvJobHead = ((EpiDataView)(this.oTrans.EpiDataViews["JobHead"]));
this.oTrans_adapter = ((EpiBaseAdapter)(this.csm.TransAdaptersHT["oTrans_adapter"]));
// Begin Wizard Added Custom Method Calls

// End Wizard Added Custom Method Calls

}

public void DestroyCustomCode()
{
// ** Wizard Insert Location - Do not delete 'Begin/End Wizard Added Object Disposal' lines **
// Begin Wizard Added Object Disposal

this.JobClosing_Column.ColumnChanged -= new DataColumnChangeEventHandler(this.JobClosing_BeforeFieldChange);

// End Wizard Added Object Disposal

// Begin Custom Code Disposal

// End Custom Code Disposal
}

private void JobClosing_BeforeFieldChange(object sender, DataColumnChangeEventArgs args)
{
// ** Argument Properties and Uses **
// args.Row["FieldName"]
// args.Column, args.ProposedValue, args.Row
// Add Event Handler Code
switch (args.Column.ColumnName)
{
case "JobComplete":
int intSTK = Convert.ToInt32(edvJobHead.dataView[edvJobHead.Row]["StockQty"]);
string strJobNum = Convert.ToString(edvJobHead.dataView[edvJobHead.Row]["JobNum"]);
bool chkCmplt = Convert.ToBoolean(edvJobHead.dataView[edvJobHead.Row]["JobComplete"]);
if (intSTK > 0)
{
UpdateJob();
}
break;
}
}

private void UpdateJob()
{
//EpiDataView edvClose = (EpiDataView)oTrans.EpiDataViews("Close");
//Dim vProcID As Boolean = edvNC.dataView(edvNC.Row)("ShortChar01")
string vJobNum = Convert.ToString(edvJobHead.dataView[edvJobHead.Row]["JobNum"]);
JobEntryAdapter adapterJobEntry = new JobEntryAdapter(this.oTrans);
adapterJobEntry.BOConnect();
try
{
bool JobNum = adapterJobEntry.GetByID(vJobNum);
adapterJobEntry.JobEntryData.JobHead.Rows[0].BeginEdit();
adapterJobEntry.JobEntryData.JobHead.Rows[0]["CheckBox01"] = true;
adapterJobEntry.JobEntryData.JobHead.Rows[0].EndEdit();
JobNum = adapterJobEntry.Update();
}
catch (Exception e)
{
//AddNewDraw()
} finally
{
adapterJobEntry.Dispose();
}
}
}

Rob Bucek
Production Control Manager
PH: (715) 284-5376 ext 311
Mobile: (715)896-3119
FAX: (715)284-4084
[cid:1.234354861@...]<http://www.dsmfg.com/>
(Click the logo to view our site)<http://www.dsmfg.com/>

From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com]
Sent: Tuesday, June 16, 2015 4:08 PM
To: vantage@yahoogroups.com
Subject: [Vantage] E10 10.0.700.4 Job Entry Adapter



All,

Trying to uplift all my old VB.net code to C# for my E10 Conversion. I have a working version of this in VB but am having a bit of trouble getting this to work in C# for E10. Basically trying to update a UD field on the JobHead table from job Closing.

I get the following error when I open the form (the code compiles without error but clearly isn't working)

Exception caught in: Ice.Lib.EpiClientLib

Error Detail
============
Message: Object reference not set to an instance of an object.
Program: Ice.Lib.EpiClientLib.dll
Method: RegisterView

Client Stack Trace
==================
at Ice.Lib.Framework.ForeignKeyAgent.RegisterView(EpiTransaction trans, String EpiBinding, String ViewName, String TableName)
at Ice.Lib.Customization.PersonalizeCustomizeManager.CallAddForeignKeyView(String colName, String viewName, String tableName, String epiGuid, String adapterName, String getByType, String parViewName, Boolean defaultAdapter)

my code below

// **************************************************
// Custom code for JobClosingForm
// Created: 6/16/2015 13:13:14
// **************************************************
using System;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Windows.Forms;
using Erp.UI;
using Ice.Lib.Customization;
using Ice.Lib.ExtendedProps;
using Ice.Lib.Framework;
using Ice.Lib.Searches;
using Ice.UI.FormFunctions;
using Erp.Adapters;

public class Script
{
// ** Wizard Insert Location - Do Not Remove 'Begin/End Wizard Added Module Level Variables' Comments! **
// Begin Wizard Added Module Level Variables **

// End Wizard Added Module Level Variables **

// Add Custom Module Level Variables Here **

private EpiDataView edvJobHead;
private JobEntryAdapter adapterJobEntry;

public void InitializeCustomCode()
{
// ** Wizard Insert Location - Do not delete 'Begin/End Wizard Added Variable Initialization' lines **
// Begin Wizard Added Variable Initialization

this.JobClosing_Column.ColumnChanged += new DataColumnChangeEventHandler(this.JobClosing_BeforeFieldChange);

// End Wizard Added Variable Initialization

this.edvJobHead = ((EpiDataView)(this.oTrans.EpiDataViews["JobHead"]));

// Begin Wizard Added Custom Method Calls

// End Wizard Added Custom Method Calls
//JobEntryAdapter adaptJobEntry = ((EpiBaseAdapter)(csm.TransAdaptersHT["JobEntryAdapter"]));

}

public void DestroyCustomCode()
{
// ** Wizard Insert Location - Do not delete 'Begin/End Wizard Added Object Disposal' lines **
// Begin Wizard Added Object Disposal

this.JobClosing_Column.ColumnChanged -= new DataColumnChangeEventHandler(this.JobClosing_BeforeFieldChange);

// End Wizard Added Object Disposal

// Begin Custom Code Disposal

// End Custom Code Disposal
}

private void JobClosing_BeforeFieldChange(object sender, DataColumnChangeEventArgs args)
{
// ** Argument Properties and Uses **
// args.Row["FieldName"]
// args.Column, args.ProposedValue, args.Row
// Add Event Handler Code
switch (args.Column.ColumnName)
{
case "JobComplete":
MessageBox.Show(Convert.ToString(edvJobHead.dataView[edvJobHead.Row]["StockQty"]));
int intSTK = Convert.ToInt32(edvJobHead.dataView[edvJobHead.Row]["StockQty"]);
string strJobNum = Convert.ToString(edvJobHead.dataView[edvJobHead.Row]["JobNum"]);
bool chkCmplt = Convert.ToBoolean(edvJobHead.dataView[edvJobHead.Row]["JobComplete"]);
if (intSTK > 0)
{
UpdateJob();
}
break;
}
}

private void UpdateJob()
{
//EpiDataView edvClose = (EpiDataView)oTrans.EpiDataViews("Close");
//Dim vProcID As Boolean = edvNC.dataView(edvNC.Row)("ShortChar01")
string vJobNum = Convert.ToString(edvJobHead.dataView[edvJobHead.Row]["JobNum"]);
JobEntryAdapter adapterJobEntry = new JobEntryAdapter(this.oTrans);
adapterJobEntry.BOConnect();
try
{
MessageBox.Show(Convert.ToString(adapterJobEntry.JobEntryData.JobHead[0]["CheckBox01"]));
bool JobNum = adapterJobEntry.GetByID(vJobNum);
adapterJobEntry.JobEntryData.Tables["JobHead"].Rows[0].BeginEdit();
adapterJobEntry.JobEntryData.JobHead[0]["CheckBox01"] = true;
adapterJobEntry.JobEntryData.Tables["JobHead"].Rows[0].EndEdit();
adapterJobEntry.Update();
}
catch (Exception e)
{
//AddNewDraw()
} finally
{
adapterJobEntry.Dispose();
}
}
}

Rob Bucek
Production Control Manager
PH: (715) 284-5376 ext 311
Mobile: (715)896-3119
FAX: (715)284-4084
[cid:1.234354861@...]<http://www.dsmfg.com/>
(Click the logo to view our site)<http://www.dsmfg.com/>

[Non-text portions of this message have been removed]



[Non-text portions of this message have been removed]
All,

Trying to uplift all my old VB.net code to C# for my E10 Conversion. I have a working version of this in VB but am having a bit of trouble getting this to work in C# for E10. Basically trying to update a UD field on the JobHead table from job Closing.

I get the following error when I open the form (the code compiles without error but clearly isn't working)

Exception caught in: Ice.Lib.EpiClientLib

Error Detail
============
Message: Object reference not set to an instance of an object.
Program: Ice.Lib.EpiClientLib.dll
Method: RegisterView

Client Stack Trace
==================
at Ice.Lib.Framework.ForeignKeyAgent.RegisterView(EpiTransaction trans, String EpiBinding, String ViewName, String TableName)
at Ice.Lib.Customization.PersonalizeCustomizeManager.CallAddForeignKeyView(String colName, String viewName, String tableName, String epiGuid, String adapterName, String getByType, String parViewName, Boolean defaultAdapter)


my code below

// **************************************************
// Custom code for JobClosingForm
// Created: 6/16/2015 13:13:14
// **************************************************
using System;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Windows.Forms;
using Erp.UI;
using Ice.Lib.Customization;
using Ice.Lib.ExtendedProps;
using Ice.Lib.Framework;
using Ice.Lib.Searches;
using Ice.UI.FormFunctions;
using Erp.Adapters;

public class Script
{
// ** Wizard Insert Location - Do Not Remove 'Begin/End Wizard Added Module Level Variables' Comments! **
// Begin Wizard Added Module Level Variables **


// End Wizard Added Module Level Variables **

// Add Custom Module Level Variables Here **

private EpiDataView edvJobHead;
private JobEntryAdapter adapterJobEntry;

public void InitializeCustomCode()
{
// ** Wizard Insert Location - Do not delete 'Begin/End Wizard Added Variable Initialization' lines **
// Begin Wizard Added Variable Initialization

this.JobClosing_Column.ColumnChanged += new DataColumnChangeEventHandler(this.JobClosing_BeforeFieldChange);

// End Wizard Added Variable Initialization

this.edvJobHead = ((EpiDataView)(this.oTrans.EpiDataViews["JobHead"]));

// Begin Wizard Added Custom Method Calls

// End Wizard Added Custom Method Calls
//JobEntryAdapter adaptJobEntry = ((EpiBaseAdapter)(csm.TransAdaptersHT["JobEntryAdapter"]));


}

public void DestroyCustomCode()
{
// ** Wizard Insert Location - Do not delete 'Begin/End Wizard Added Object Disposal' lines **
// Begin Wizard Added Object Disposal

this.JobClosing_Column.ColumnChanged -= new DataColumnChangeEventHandler(this.JobClosing_BeforeFieldChange);

// End Wizard Added Object Disposal

// Begin Custom Code Disposal

// End Custom Code Disposal
}

private void JobClosing_BeforeFieldChange(object sender, DataColumnChangeEventArgs args)
{
// ** Argument Properties and Uses **
// args.Row["FieldName"]
// args.Column, args.ProposedValue, args.Row
// Add Event Handler Code
switch (args.Column.ColumnName)
{
case "JobComplete":
MessageBox.Show(Convert.ToString(edvJobHead.dataView[edvJobHead.Row]["StockQty"]));
int intSTK = Convert.ToInt32(edvJobHead.dataView[edvJobHead.Row]["StockQty"]);
string strJobNum = Convert.ToString(edvJobHead.dataView[edvJobHead.Row]["JobNum"]);
bool chkCmplt = Convert.ToBoolean(edvJobHead.dataView[edvJobHead.Row]["JobComplete"]);
if (intSTK > 0)
{
UpdateJob();
}
break;
}
}

private void UpdateJob()
{
//EpiDataView edvClose = (EpiDataView)oTrans.EpiDataViews("Close");
//Dim vProcID As Boolean = edvNC.dataView(edvNC.Row)("ShortChar01")
string vJobNum = Convert.ToString(edvJobHead.dataView[edvJobHead.Row]["JobNum"]);
JobEntryAdapter adapterJobEntry = new JobEntryAdapter(this.oTrans);
adapterJobEntry.BOConnect();
try
{
MessageBox.Show(Convert.ToString(adapterJobEntry.JobEntryData.JobHead[0]["CheckBox01"]));
bool JobNum = adapterJobEntry.GetByID(vJobNum);
adapterJobEntry.JobEntryData.Tables["JobHead"].Rows[0].BeginEdit();
adapterJobEntry.JobEntryData.JobHead[0]["CheckBox01"] = true;
adapterJobEntry.JobEntryData.Tables["JobHead"].Rows[0].EndEdit();
adapterJobEntry.Update();
}
catch (Exception e)
{
//AddNewDraw()
} finally
{
adapterJobEntry.Dispose();
}
}
}


Rob Bucek
Production Control Manager
PH: (715) 284-5376 ext 311
Mobile: (715)896-3119
FAX: (715)284-4084
[cid:1.234354861@...]<http://www.dsmfg.com/>
(Click the logo to view our site)<http://www.dsmfg.com/>



[Non-text portions of this message have been removed]

Good luck and I hope an answer (or at least a reason) gets posted because since going live on E10 2+ weeks ago I see this a dozen times a day and have no idea what causes it.  I cringe every time someone brings a printed error details to me.   Sometimes refreshing a screen will help.  The only time we could reliably reproduce it was when turning a Quote to a Sales Order just after restoring the empty DB and there was no “initial” SO in the OrderHed table.  So maybe if you are testing against an empty DB table and no prior jobs it could be the same sort of thing.

 

-Todd C.

 

 

From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com]
Sent: Tuesday, June 16, 2015 4:08 PM
To: vantage@yahoogroups.com
Subject: [Vantage] E10 10.0.700.4 Job Entry Adapter

 

 

All,

Trying to uplift all my old VB.net code to C# for my E10 Conversion. I have a working version of this in VB but am having a bit of trouble getting this to work in C# for E10. Basically trying to update a UD field on the JobHead table from job Closing.

I get the following error when I open the form (the code compiles without error but clearly isn't working)

Exception caught in: Ice.Lib.EpiClientLib

Error Detail
============
Message: Object reference not set to an instance of an object.
Program: Ice.Lib.EpiClientLib.dll
Method: RegisterView

Client Stack Trace
==================
at Ice.Lib.Framework.ForeignKeyAgent.RegisterView(EpiTransaction trans, String EpiBinding, String ViewName, String TableName)
at Ice.Lib.Customization.PersonalizeCustomizeManager.CallAddForeignKeyView(String colName, String viewName, String tableName, String epiGuid, String adapterName, String getByType, String parViewName, Boolean defaultAdapter)

my code below

// **************************************************
// Custom code for JobClosingForm
// Created: 6/16/2015 13:13:14
// **************************************************
using System;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Windows.Forms;
using Erp.UI;
using Ice.Lib.Customization;
using Ice.Lib.ExtendedProps;
using Ice.Lib.Framework;
using Ice.Lib.Searches;
using Ice.UI.FormFunctions;
using Erp.Adapters;

public class Script
{
// ** Wizard Insert Location - Do Not Remove 'Begin/End Wizard Added Module Level Variables' Comments! **
// Begin Wizard Added Module Level Variables **

// End Wizard Added Module Level Variables **

// Add Custom Module Level Variables Here **

private EpiDataView edvJobHead;
private JobEntryAdapter adapterJobEntry;

public void InitializeCustomCode()
{
// ** Wizard Insert Location - Do not delete 'Begin/End Wizard Added Variable Initialization' lines **
// Begin Wizard Added Variable Initialization

this.JobClosing_Column.ColumnChanged += new DataColumnChangeEventHandler(this.JobClosing_BeforeFieldChange);

// End Wizard Added Variable Initialization

this.edvJobHead = ((EpiDataView)(this.oTrans.EpiDataViews["JobHead"]));

// Begin Wizard Added Custom Method Calls

// End Wizard Added Custom Method Calls
//JobEntryAdapter adaptJobEntry = ((EpiBaseAdapter)(csm.TransAdaptersHT["JobEntryAdapter"]));

}

public void DestroyCustomCode()
{
// ** Wizard Insert Location - Do not delete 'Begin/End Wizard Added Object Disposal' lines **
// Begin Wizard Added Object Disposal

this.JobClosing_Column.ColumnChanged -= new DataColumnChangeEventHandler(this.JobClosing_BeforeFieldChange);

// End Wizard Added Object Disposal

// Begin Custom Code Disposal

// End Custom Code Disposal
}

private void JobClosing_BeforeFieldChange(object sender, DataColumnChangeEventArgs args)
{
// ** Argument Properties and Uses **
// args.Row["FieldName"]
// args.Column, args.ProposedValue, args.Row
// Add Event Handler Code
switch (args.Column.ColumnName)
{
case "JobComplete":
MessageBox.Show(Convert.ToString(edvJobHead.dataView[edvJobHead.Row]["StockQty"]));
int intSTK = Convert.ToInt32(edvJobHead.dataView[edvJobHead.Row]["StockQty"]);
string strJobNum = Convert.ToString(edvJobHead.dataView[edvJobHead.Row]["JobNum"]);
bool chkCmplt = Convert.ToBoolean(edvJobHead.dataView[edvJobHead.Row]["JobComplete"]);
if (intSTK > 0)
{
UpdateJob();
}
break;
}
}

private void UpdateJob()
{
//EpiDataView edvClose = (EpiDataView)oTrans.EpiDataViews("Close");
//Dim vProcID As Boolean = edvNC.dataView(edvNC.Row)("ShortChar01")
string vJobNum = Convert.ToString(edvJobHead.dataView[edvJobHead.Row]["JobNum"]);
JobEntryAdapter adapterJobEntry = new JobEntryAdapter(this.oTrans);
adapterJobEntry.BOConnect();
try
{
MessageBox.Show(Convert.ToString(adapterJobEntry.JobEntryData.JobHead[0]["CheckBox01"]));
bool JobNum = adapterJobEntry.GetByID(vJobNum);
adapterJobEntry.JobEntryData.Tables["JobHead"].Rows[0].BeginEdit();
adapterJobEntry.JobEntryData.JobHead[0]["CheckBox01"] = true;
adapterJobEntry.JobEntryData.Tables["JobHead"].Rows[0].EndEdit();
adapterJobEntry.Update();
}
catch (Exception e)
{
//AddNewDraw()
} finally
{
adapterJobEntry.Dispose();
}
}
}

Rob Bucek
Production Control Manager
PH: (715) 284-5376 ext 311
Mobile: (715)896-3119
FAX: (715)284-4084
[cid:1.234354861@...]<http://www.dsmfg.com/>
(Click the logo to view our site)<http://www.dsmfg.com/>

[Non-text portions of this message have been removed]