# AfterFieldChange code error

**URL:** <https://www.epiusers.help/t/afterfieldchange-code-error/51087>\
**Category:** Epicor ERP 10\
**Tags:** e10\
**Created:** [January 4, 2019, 10:22pm UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087 "2019-01-04T22:22:25Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![IanCastellanos](https://www.epiusers.help/letter_avatar_proxy/v4/letter/i/c6cbf5/32.png) [@IanCastellanos](https://www.epiusers.help/u/IanCastellanos)\
**Post date:** [January 4, 2019, 10:22pm UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/1 "2019-01-04T22:22:25Z")

</div>

Hello

I am trying to add some code that is going to update some values on a quote after a certain case is met. When entering the value in the field I am being met with a “Object reference not set to an instance of an object” Application error.

Here is the code I added:

```auto
private void QuoteHed_AfterFieldChange(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 "PrevWageRate_c": //testing IC 1/4/10
				
				    var prevWageRate = Convert.ToDecimal(edvQuoteHed.dataView[edvQuoteHed.Row] ["PrevWageRate_c"]);
				
				    if(Convert.ToBoolean(edvQuoteHed.dataView[edvQuoteHed.Row]["PrevWage_c"]) == true)
					{
					edvQuoteOpDtl.dataView[edvQuoteOpDtl.Row]["OverrideRates"] = true;
					edvQuoteOpDtl.dataView[edvQuoteOpDtl.Row]["ProdLabRate"] = prevWageRate;
					}
			    break;

```

There are other cases below it that work fine.

I have added

private EpiDataView edvQuoteOpDtl;

this.edvQuoteOpDtl = ((EpiDataView)(this.oTrans.EpiDataViews[“QuoteOpDtl”]));

this.edvQuoteOpDtl = null;

in the necessary places along with the exisiting EpiDataView for QuoteHed.

Do I have to add BO to this case to get it to function how I want?

---

<div class="post-metadata">

**Author:** ![josecgomez](https://www.epiusers.help/user_avatar/www.epiusers.help/josecgomez/32/55731_2.png) [@josecgomez](https://www.epiusers.help/u/josecgomez)\
**Post date:** [January 4, 2019, 10:26pm UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/2 "2019-01-04T22:26:07Z")

</div>

> [@IanCastellanos](#):
>
> args.ProposedValue

Try using the above, instead of this

```cs
edvQuoteHed.dataView[edvQuoteHed.Row] ["PrevWageRate_c"]

```

---

<div class="post-metadata">

**Author:** ![IanCastellanos](https://www.epiusers.help/letter_avatar_proxy/v4/letter/i/c6cbf5/32.png) [@IanCastellanos](https://www.epiusers.help/u/IanCastellanos)\
**Post date:** [January 4, 2019, 10:40pm UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/3 "2019-01-04T22:40:01Z")

</div>

I replaced that line with this:

```auto
var prevWageRate = Convert.ToDecimal(args.ProposedValue);

```

and am still getting the same Application Error:

 ![image](https://epiusers.help/uploads/default/original/2X/1/1b7d2bafe146bc6727de25dabb4944c62fb64e25.png)

---

<div class="post-metadata">

**Author:** ![Banderson](https://www.epiusers.help/user_avatar/www.epiusers.help/banderson/32/50875_2.png) [@Banderson](https://www.epiusers.help/u/Banderson)\
**Post date:** [January 4, 2019, 10:58pm UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/4 "2019-01-04T22:58:02Z")

</div>

Try dropping in some message boxes to pop up so you can narrow it down to a specific problem line.

---

<div class="post-metadata">

**Author:** ![Chris\_Conn](https://www.epiusers.help/user_avatar/www.epiusers.help/chris_conn/32/93797_2.png) [@Chris\_Conn](https://www.epiusers.help/u/Chris_Conn)\
**Post date:** [January 4, 2019, 11:41pm UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/5 "2019-01-04T23:41:48Z")

</div>

> [@IanCastellanos](#):
>
> edvQuoteOpDtl.dataView[edvQuoteOpDtl.Row]

Instead of explicitly trying to access the dataview, use the passed parameter:  
args.Row[“YourField”] = xxx

Update - nevermind I see you are also accessing the Dtl view. Make sure you check first that Row \>= 0

```cs
if(edvQuoteOpDtl != null && edvQuoteOpDtl.Row >= 0)
{
Change your dtl

}

```

---

<div class="post-metadata">

**Author:** ![IanCastellanos](https://www.epiusers.help/letter_avatar_proxy/v4/letter/i/c6cbf5/32.png) [@IanCastellanos](https://www.epiusers.help/u/IanCastellanos)\
**Post date:** [January 4, 2019, 11:45pm UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/6 "2019-01-04T23:45:29Z")

</div>

Was looking through field help to make sure that I had the right information and saw that the epibinding and db field are different for the fields I am trying to change:

 ![image](https://epiusers.help/uploads/default/original/2X/e/ea4d8fd947ac6648e42496fd31d88c6548d6bc86.png)

---

<div class="post-metadata">

**Author:** ![IanCastellanos](https://www.epiusers.help/letter_avatar_proxy/v4/letter/i/c6cbf5/32.png) [@IanCastellanos](https://www.epiusers.help/u/IanCastellanos)\
**Post date:** [January 4, 2019, 11:58pm UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/7 "2019-01-04T23:58:04Z")

</div>

Ended up combining what @josecgomez and @Chris_Conn suggested and it seems to be working for me right now. Ended up with this for the case statement:

```auto
 case "PrevWageRate_c": //testing IC 1/4/10
				
				//var prevWageRate = Convert.ToDecimal(edvQuoteHed.dataView[edvQuoteHed.Row]["PrevWageRate_c"]);
				var prevWageRate = Convert.ToDecimal(args.ProposedValue);
				var prevWage = Convert.ToBoolean(edvQuoteHed.dataView[edvQuoteHed.Row]["PrevWage_c"]);
				
				if(prevWage = true && prevWageRate != 0)
					{
						if(edvJobOpDtl != null && edvJobOpDtl.Row >= 0)
						{						
							edvJobOpDtl.dataView[edvJobOpDtl.Row]["OverrideRates"] = true;
							edvJobOpDtl.dataView[edvJobOpDtl.Row]["ProdLabRate"] = prevWageRate;
						}
					}
			break;

```

Ended up changing QuoteOpDtl to JobOpDtl along with the change suggested.

Thank you. You guys always save me.

---

<div class="post-metadata">

**Author:** ![hkeric.wci](https://www.epiusers.help/user_avatar/www.epiusers.help/hkeric.wci/32/52019_2.png) [@hkeric.wci](https://www.epiusers.help/u/hkeric.wci)\
**Post date:** [January 6, 2019, 5:49am UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/8 "2019-01-06T05:49:01Z")

</div>

> [@IanCastellanos](#):
>
> if(prevWage = true && prevWageRate != 0)

You got a bug in your code 🙂 which you wont notice yet, but soon you will.

---

<div class="post-metadata">

**Author:** ![IanCastellanos](https://www.epiusers.help/letter_avatar_proxy/v4/letter/i/c6cbf5/32.png) [@IanCastellanos](https://www.epiusers.help/u/IanCastellanos)\
**Post date:** [January 7, 2019, 6:30pm UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/9 "2019-01-07T18:30:29Z")

</div>

😅

---

<div class="post-metadata">

**Author:** ![IanCastellanos](https://www.epiusers.help/letter_avatar_proxy/v4/letter/i/c6cbf5/32.png) [@IanCastellanos](https://www.epiusers.help/u/IanCastellanos)\
**Post date:** [January 7, 2019, 11:38pm UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/10 "2019-01-07T23:38:23Z")

</div>

Can I add an easy foreach statement in here without blowing it up? ?There are multiple lines that need to take the value and it is currently doing the last one.

```auto
foreach(DataRow dr in edvQuoteDtl.Rows)

```

Is what I would have written.

Also now when I click save the values disappear? Wasn’t happening to me last week.

![image](https://epiusers.help/uploads/default/original/2X/0/002951c59229646f4e1297c69d8d48c67a6cad42.png)

Edit:

```auto
for(int i = 0; i < edvJobOpDtl.dataView.Count; i++)

```

I had pasted the wrong code up above.

This should go through the rows the way I want correct?

---

<div class="post-metadata">

**Author:** ![Chris\_Conn](https://www.epiusers.help/user_avatar/www.epiusers.help/chris_conn/32/93797_2.png) [@Chris\_Conn](https://www.epiusers.help/u/Chris_Conn)\
**Post date:** [January 8, 2019, 1:34am UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/11 "2019-01-08T01:34:06Z")

</div>

You’re close, you’ll need

```auto
foreach(DataViewRow dr in edvQuoteDtl.dataView)
or
foreach(DataRow dr in edvQuoteDtl.dataView.Table.Rows)

```

---

<div class="post-metadata">

**Author:** ![IanCastellanos](https://www.epiusers.help/letter_avatar_proxy/v4/letter/i/c6cbf5/32.png) [@IanCastellanos](https://www.epiusers.help/u/IanCastellanos)\
**Post date:** [January 8, 2019, 1:44am UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/12 "2019-01-08T01:44:25Z")

</div>

Thanks.

I think I had tried foreach(DataRow dr in edvQuoteDtl.dataView) before and got a comp error.

Now I know why! LOL

---

<div class="post-metadata">

**Author:** ![IanCastellanos](https://www.epiusers.help/letter_avatar_proxy/v4/letter/i/c6cbf5/32.png) [@IanCastellanos](https://www.epiusers.help/u/IanCastellanos)\
**Post date:** [January 8, 2019, 2:13am UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/13 "2019-01-08T02:13:40Z")

</div>

Still doesn’t seem to be applying it to all the lines in the quote… I have to be missing something that I am not seeing. And I am still seeing those 2 boxes values disappear as well…

This is starting to get frustrating haha.

Although when there is only 1 line everything is fine all fields have and retain values.

---

<div class="post-metadata">

**Author:** ![hkeric.wci](https://www.epiusers.help/user_avatar/www.epiusers.help/hkeric.wci/32/52019_2.png) [@hkeric.wci](https://www.epiusers.help/u/hkeric.wci)\
**Post date:** [January 8, 2019, 3:16am UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/14 "2019-01-08T03:16:16Z")

</div>

Give us a little more code. Works for me. I use the DataViewRow version on QuoteQty, QuoteMtl etc…

---

<div class="post-metadata">

**Author:** ![IanCastellanos](https://www.epiusers.help/letter_avatar_proxy/v4/letter/i/c6cbf5/32.png) [@IanCastellanos](https://www.epiusers.help/u/IanCastellanos)\
**Post date:** [January 8, 2019, 3:26am UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/15 "2019-01-08T03:26:01Z")

</div>

This is what I currently have:

```auto
case "PrevWageRate_c": //testing IC 1/4/10
				
				var prevWage = Convert.ToBoolean(edvQuoteHed.dataView[edvQuoteHed.Row]["PrevWage_c"]);
				var prevWageRate = Convert.ToDecimal(args.ProposedValue);
				
				if(prevWage == true && prevWageRate != 0)
					{
						if(edvJobOpDtl != null && edvJobOpDtl.Row >= 0 && Convert.ToBoolean(edvQuoteDtl.dataView[edvQuoteDtl.Row]["ReadyToQuote"]) == false)
						{
							foreach(DataRow dr in edvJobOpDtl.dataView.Table.Rows)
							{		
							edvJobOpDtl.dataView[edvJobOpDtl.Row]["OverrideRates"] = true;
							edvJobOpDtl.dataView[edvJobOpDtl.Row]["ProdLabRate"] = prevWageRate;
							}							
						}
					}
			break;

```

It seems to work on quotes with 1 line. Once it is greater than 1 line the values in the 2 boxes in summary disappear and the other lines do not get the new rate and the override.

Does the DataViewRow version require different coding to work? I’ve only ever used DataRow.

---

<div class="post-metadata">

**Author:** ![hkeric.wci](https://www.epiusers.help/user_avatar/www.epiusers.help/hkeric.wci/32/52019_2.png) [@hkeric.wci](https://www.epiusers.help/u/hkeric.wci)\
**Post date:** [January 8, 2019, 3:36am UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/16 "2019-01-08T03:36:54Z")

</div>

I always do mine on the DataViewRow, I dont think it should matter.

```cs
foreach (DataRowView drJM in edvJM.dataView)
{
	// Variables
	decimal vQP = Convert.ToDecimal(drJM["QtyPer"]);
	string vPC = drJM["Class"].ToString();

	// Calculate Per Order & Quantity Per Year
	drJM["MtlCalcQtyOrder"] = Math.Round(vQQ * vQP, 2);
	drJM["MtlCalcQtyYear"] = Math.Round(vSEQ * vQP, 2);
}

```

But anyways you should be doing this in your foreach ( use dr ) lol

```cs
dr["OverrideRates"] = true;

```

```cs
foreach(DataRow dr in edvJobOpDtl.dataView.Table.Rows)
{		
	dr["OverrideRates"] = true;
	dr["ProdLabRate"] = prevWageRate;
}

```

---

<div class="post-metadata">

**Author:** ![IanCastellanos](https://www.epiusers.help/letter_avatar_proxy/v4/letter/i/c6cbf5/32.png) [@IanCastellanos](https://www.epiusers.help/u/IanCastellanos)\
**Post date:** [January 8, 2019, 4:03am UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/17 "2019-01-08T04:03:23Z")

</div>

Still a no go. First line has correct values:

 ![image](https://epiusers.help/uploads/default/original/2X/b/b8162f219f91871dd1e887b6680814099eedf26b.png)

Second line does not:

 ![image](https://epiusers.help/uploads/default/original/2X/8/8935f08c4b651a86415d2cca6fcab5d484821080.png)

These are the 2 fields I need to change:

![image](https://epiusers.help/uploads/default/original/2X/4/4b1968bc0ccb6d36f9a6f0b8cf9ebb584e214a82.png)

![image](https://epiusers.help/uploads/default/original/2X/c/c76b09a603380b97e1638c49539cbb2b42fbf586.png)

At this point I am wondering if it is something with the fields themselves. Or I am going about doing this the wrong way.

---

<div class="post-metadata">

**Author:** ![Chris\_Conn](https://www.epiusers.help/user_avatar/www.epiusers.help/chris_conn/32/93797_2.png) [@Chris\_Conn](https://www.epiusers.help/u/Chris_Conn)\
**Post date:** [January 8, 2019, 4:15am UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/18 "2019-01-08T04:15:27Z")

</div>

> [@IanCastellanos](#):
>
> foreach(DataRow dr in edvJobOpDtl.dataView.Table.Rows) { edvJobOpDtl.dataView[edvJobOpDtl.Row][“OverrideRates”] = true; edvJobOpDtl.dataView[edvJobOpDtl.Row][“ProdLabRate”] = prevWageRate; }

Are you sure you did:

```cs
foreach(DataRow dr in edvJobOpDtl.dataView.Table.Rows)
							{		
							dr["OverrideRates"] = true;
							dr["ProdLabRate"] = prevWageRate;
							}	

```

Also you may want to call a Notify or save.

Also, check a trace. There may be some supporting call when changing the Override or the values there.

---

<div class="post-metadata">

**Author:** ![IanCastellanos](https://www.epiusers.help/letter_avatar_proxy/v4/letter/i/c6cbf5/32.png) [@IanCastellanos](https://www.epiusers.help/u/IanCastellanos)\
**Post date:** [January 8, 2019, 4:48am UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/19 "2019-01-08T04:48:10Z")

</div>

Yes I made sure I did that.

Call oTrans.Notify()?

I had oTrans.Update(); and oTrans.NotifyAll(); in there earlier and there was no change.

I can run a trace as well. Just a basic one should suffice correct?

---

<div class="post-metadata">

**Author:** ![IanCastellanos](https://www.epiusers.help/letter_avatar_proxy/v4/letter/i/c6cbf5/32.png) [@IanCastellanos](https://www.epiusers.help/u/IanCastellanos)\
**Post date:** [January 8, 2019, 6:17am UTC](https://www.epiusers.help/t/afterfieldchange-code-error/51087/20 "2019-01-08T06:17:57Z")

</div>

Here’s a snippet of the trace log:

```auto
<tracePacket>
  <businessObject>Erp.Proxy.BO.QuoteAsmImpl</businessObject>
  <methodName>ChangeOpDtlOverrideRates</methodName>
  <appServerUri>net.tcp://omsvepiazu001/E10Test/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>1/7/2019 21:44:50:4650839 PM</localTime>
  <executionTime>12</executionTime>
  <parameters>
    <parameter name="ds" type="QuoteAsmDataSet">
      <QuoteAsmDataSet xmlns="http://www.epicor.com/Ice/300/BO/QuoteAsm/QuoteAsm" />
    </parameter>
    <parameter name="CallContext" type="Ice.Bpm.Context.ContextDataSet">
      <ContextDataSet xmlns="http://www.epicor.com/Ice/300/Bpm/Context">
        <BpmData>
          <Number01>0</Number01>
          <SysRowID>00000000-0000-0000-0000-000000000000</SysRowID>
        </BpmData>
      </ContextDataSet>
    </parameter>
  </parameters>
  <paramDataSetChanges>
    <paramDataSet name="ds" useDataSetNbr="0">
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="0" colName="ProdLabRate"><![CDATA[255.00]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="0" colName="RowMod"><![CDATA[U]]></changedValue>
    </paramDataSet>
  </paramDataSetChanges>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.QuoteAsmImpl</businessObject>
  <methodName>ChangeOpDtlOverrideRates</methodName>
  <appServerUri>net.tcp://omsvepiazu001/E10Test/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>1/7/2019 21:44:50:5000859 PM</localTime>
  <executionTime>12</executionTime>
  <parameters>
    <parameter name="ds" type="QuoteAsmDataSet">
      <QuoteAsmDataSet xmlns="http://www.epicor.com/Ice/300/BO/QuoteAsm/QuoteAsm" />
    </parameter>
    <parameter name="CallContext" type="Ice.Bpm.Context.ContextDataSet">
      <ContextDataSet xmlns="http://www.epicor.com/Ice/300/Bpm/Context">
        <BpmData>
          <Number01>0</Number01>
          <SysRowID>00000000-0000-0000-0000-000000000000</SysRowID>
        </BpmData>
      </ContextDataSet>
    </parameter>
  </parameters>
  <paramDataSetChanges>
    <paramDataSet name="ds" useDataSetNbr="0">
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="0" colName="ProdLabRate"><![CDATA[255.00]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="0" colName="RowMod"><![CDATA[U]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="1" colName="ProdLabRate"><![CDATA[255.00]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="1" colName="RowMod"><![CDATA[U]]></changedValue>
    </paramDataSet>
  </paramDataSetChanges>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.QuoteAsmImpl</businessObject>
  <methodName>ChangeOpDtlOverrideRates</methodName>
  <appServerUri>net.tcp://omsvepiazu001/E10Test/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>1/7/2019 21:44:50:5350909 PM</localTime>
  <executionTime>12</executionTime>
  <parameters>
    <parameter name="ds" type="QuoteAsmDataSet">
      <QuoteAsmDataSet xmlns="http://www.epicor.com/Ice/300/BO/QuoteAsm/QuoteAsm" />
    </parameter>
    <parameter name="CallContext" type="Ice.Bpm.Context.ContextDataSet">
      <ContextDataSet xmlns="http://www.epicor.com/Ice/300/Bpm/Context">
        <BpmData>
          <Number01>0</Number01>
          <SysRowID>00000000-0000-0000-0000-000000000000</SysRowID>
        </BpmData>
      </ContextDataSet>
    </parameter>
  </parameters>
  <paramDataSetChanges>
    <paramDataSet name="ds" useDataSetNbr="0">
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="0" colName="ProdLabRate"><![CDATA[255.00]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="0" colName="RowMod"><![CDATA[U]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="1" colName="ProdLabRate"><![CDATA[255.00]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="1" colName="RowMod"><![CDATA[U]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="2" colName="ProdLabRate"><![CDATA[255.00]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="2" colName="RowMod"><![CDATA[U]]></changedValue>
    </paramDataSet>
  </paramDataSetChanges>
</tracePacket>

<tracePacket>
  <businessObject>Ice.Proxy.BO.UD02Impl</businessObject>
  <methodName>GetRows</methodName>
  <appServerUri>net.tcp://omsvepiazu001/E10Test/</appServerUri>
  <returnType>UD02Tableset</returnType>
  <localTime>1/7/2019 21:44:50:5600907 PM</localTime>
  <executionTime>8</executionTime>
  <parameters>
    <parameter name="whereClauseUD02" type="System.String"><![CDATA[Key1 = 'Quote' And Key2 = '83135' BY Key1]]></parameter>
    <parameter name="whereClauseUD02Attch" type="System.String"><![CDATA[]]></parameter>
    <parameter name="pageSize" type="System.Int32"><![CDATA[0]]></parameter>
    <parameter name="absolutePage" type="System.Int32"><![CDATA[0]]></parameter>
    <parameter name="morePages" type="System.Boolean"><![CDATA[False]]></parameter>
    <parameter name="CallContext" type="Ice.Bpm.Context.ContextDataSet">
      <ContextDataSet xmlns="http://www.epicor.com/Ice/300/Bpm/Context">
        <BpmData>
          <Number01>0</Number01>
          <SysRowID>00000000-0000-0000-0000-000000000000</SysRowID>
        </BpmData>
      </ContextDataSet>
    </parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Ice.Proxy.BO.UD02Impl</businessObject>
  <methodName>GetRows</methodName>
  <appServerUri>net.tcp://omsvepiazu001/E10Test/</appServerUri>
  <returnType>UD02Tableset</returnType>
  <localTime>1/7/2019 21:44:50:6250962 PM</localTime>
  <executionTime>10</executionTime>
  <parameters>
    <parameter name="whereClauseUD02" type="System.String"><![CDATA[Key1 = 'Quote' And Key2 = '83135' BY Key1]]></parameter>
    <parameter name="whereClauseUD02Attch" type="System.String"><![CDATA[]]></parameter>
    <parameter name="pageSize" type="System.Int32"><![CDATA[0]]></parameter>
    <parameter name="absolutePage" type="System.Int32"><![CDATA[0]]></parameter>
    <parameter name="morePages" type="System.Boolean"><![CDATA[False]]></parameter>
    <parameter name="CallContext" type="Ice.Bpm.Context.ContextDataSet">
      <ContextDataSet xmlns="http://www.epicor.com/Ice/300/Bpm/Context">
        <BpmData>
          <Number01>0</Number01>
          <SysRowID>00000000-0000-0000-0000-000000000000</SysRowID>
        </BpmData>
      </ContextDataSet>
    </parameter>
  </parameters>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.QuoteAsmImpl</businessObject>
  <methodName>Update</methodName>
  <appServerUri>net.tcp://omsvepiazu001/E10Test/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>1/7/2019 21:44:52:0549861 PM</localTime>
  <executionTime>132</executionTime>
  <parameters>
    <parameter name="ds" type="QuoteAsmDataSet">
      <QuoteAsmDataSet xmlns="http://www.epicor.com/Ice/300/BO/QuoteAsm/QuoteAsm" />
    </parameter>
    <parameter name="CallContext" type="Ice.Bpm.Context.ContextDataSet">
      <ContextDataSet xmlns="http://www.epicor.com/Ice/300/Bpm/Context">
        <BpmData>
          <Number01>0</Number01>
          <SysRowID>00000000-0000-0000-0000-000000000000</SysRowID>
        </BpmData>
      </ContextDataSet>
    </parameter>
  </parameters>
  <paramDataSetChanges>
    <paramDataSet name="ds" useDataSetNbr="0">
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="0" colName="ProdLabRate"><![CDATA[255.00]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="0" colName="RowMod"><![CDATA[U]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="1" colName="ProdLabRate"><![CDATA[255.00]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="1" colName="RowMod"><![CDATA[U]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="2" colName="ProdLabRate"><![CDATA[255.00]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="2" colName="RowMod"><![CDATA[U]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="3" colName="ProdLabRate"><![CDATA[255.00]]></changedValue>
      <changedValue tableName="QuoteOpDtl" rowState="Modified" rowNum="3" colName="RowMod"><![CDATA[U]]></changedValue>
    </paramDataSet>
  </paramDataSetChanges>
</tracePacket>

<tracePacket>
  <businessObject>Erp.Proxy.BO.QuoteImpl</businessObject>
  <methodName>GetByID</methodName>
  <appServerUri>net.tcp://omsvepiazu001/E10Test/</appServerUri>
  <returnType>QuoteTableset</returnType>
  <localTime>1/7/2019 21:44:52:2399777 PM</localTime>
  <executionTime>103</executionTime>
  <parameters>
    <parameter name="quoteNum" type="System.Int32"><![CDATA[83135]]></parameter>
    <parameter name="CallContext" type="Ice.Bpm.Context.ContextDataSet">
      <ContextDataSet xmlns="http://www.epicor.com/Ice/300/Bpm/Context">
        <BpmData>
          <Number01>0</Number01>
          <SysRowID>00000000-0000-0000-0000-000000000000</SysRowID>
        </BpmData>
      </ContextDataSet>
    </parameter>
  </parameters>
</tracePacket>

```

I am seeing that ChangeOpDtlOverrideRates method name pop up more than once.

Also the code is acting weird when changing values. I can enter in different values into the PreWageRate box it won’t update the box but will update the lines one at a time so all boxes can have different values.I’ll put a video up of what I am talking about shortly.

Edit:

Just throwing stuff out there as I have no answers or ideas as to why I can’t go through the rows on the dataview on the jobopdtl. Does the fact that the DB field and EpiBinding are different tables have anything to do with it not going through the rows properly?

Does the afterfieldchange event only take the epibinding into account?

[Next page](https://www.epiusers.help/t/afterfieldchange-code-error/51087.md?page=2)
