LaborAdapter.SelectForWork exception

Can anyone help me get to the bottom of this exception from LaborAdapter.SelectForWork:
Labor Header has not changed.

Doing trace I can see that prior to that call there is:
LaborAdapter.GetNewLaborDtlOnSelectForWorkMethod

I figure I have to get a new labor dtl but it wants me to pass in laborHedSeq. Where do I get this? I do not see a call in the trace to GetNewLaborHed so how did the MES screen know what value to pass there?

I am sure that most of this issue is my lack of understanding the tables and their uses in the system as a whole.

When you Clock In a LaborHed record is created you can do a lookup on it for activetrans = true that gets you the LaborHed Seq…

And Jose to the rescue again. Off the top of your head, am I better off going through an adapter for that query or just using a BAQ with current emp and activetrans = true?

You can do LaborAdapter.GetRows and pass a whereClause or write a BAQ>… that is upto you :slight_smile:

Jose wins.

SearchOptions opts = new SearchOptions(SearchMode.AutoSearch);
bool more;
opts.PageSize = 20; //return this many
string whereSeq = string.Format("ActiveTrans = TRUE and EmployeeNum = '{0}'",((Ice.Core.Session)oTrans.Session).EmployeeID.ToString());
opts.NamedSearch.WhereClauses.Add("LaborHed",whereSeq); 
var lbr = adapterLabor.GetRows(opts, out more);
MessageBox.Show(lbr.Tables[0].Rows[0]["LaborHedSeq"].ToString());

1 Like

@josecgomez.trigemco

But wait there’s more!

I am passing these params to GetNewLaborDtlOnSelectForWork:

And I get this wonderful exception:

That exception happens only once. If I try again it doesn’t occur (although I am still getting “Labor Header has not changed”)

What params… paste the code…

adapterLabor.GetNewLaborDtlOnSelectForWork(Convert.ToInt32(lbr.Tables[0].Rows[0]["LaborHedSeq"].ToString()),epiUltraGridJobs.Selected.Rows[0].Cells["JobHead_JobNum"].Text,Convert.ToInt32(epiUltraGridJobs.Selected.Rows[0].Cells["JobOpDtl_AssemblySeq"].Text),Convert.ToInt32(epiUltraGridJobs.Selected.Rows[0].Cells["JobOpDtl_OprSeq"].Text),epiUltraGridJobs.Selected.Rows[0].Cells["JobOpDtl_ResourceGrpID"].Text,"B",out prompt);

3645, “F000007486”,0,10,“PRGP0500”,“B”

Interestingly, I noted the error title referenced the wrong resource group so I removed some other test code where I was selecting the group in the title. Now, the error title is:

Oooh, maybe I need to pass the resource group of the Employee :blush:

Nope - No change. :cry:

Table: LaborDtl
Company=‘CP’ LaborHedSeq=‘3645’ LaborDtlSeq=‘136612’ SysRowID=‘00000000-0000-0000-0000-000000000000’: ForeignKeyConstraint LaborHedLaborDtl requires the child key values (CP, 3645) to exist in the parent table. —> System.Data.ConstraintException: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

It thinks that the LaborHead doesn’t exist…
Run a Trace on this manually and make sure you are making all the correct calls.

There are a lot of calls I don’t recognize, mainly IMPLs, a few of which appear to be loading the customization. Apologies in advance for this long post but I did trim it as much as possible, leaving only the relevant info. This is start to finish (of the working, default operation):

  <businessObject>Ice.Proxy.BO.GenXDataImpl</businessObject>
  <methodName>GetList</methodName>
  <returnType>XXXDefListTableset</returnType>
    <parameter name="whereClause" type="System.String"><![CDATA[Key2 = 'App.WorkQueueEntry.WorkQueueForm']]></parameter>



  <businessObject>Ice.Proxy.BO.GenXDataImpl</businessObject>
  <methodName>GetList</methodName>
   <returnType>XXXDefListTableset</returnType>
    <parameter name="whereClause" type="System.String"><![CDATA[Key2 = 'App.WorkQueueEntry.WorkQueueForm']]></parameter>
   

  <businessObject>Ice.Proxy.BO.GenXDataImpl</businessObject>
  <methodName>GetRows</methodName>
  <returnType>GenXDataTableset</returnType>
    <parameter name="whereClauseXXXDef" type="System.String"><![CDATA[Company = 'CP' AND ProductID = 'EP' AND TypeCode = 'Customization' AND CGCCode = '' AND Key1 = 'WORKQ_DEFAULTVALUES_CC' AND Key2 = 'App.WorkQueueEntry.WorkQueueForm' AND Key3 = '']]></parameter>
   


  <businessObject>Ice.Proxy.BO.GenXDataImpl</businessObject>
  <methodName>GetRows</methodName>
  <returnType>GenXDataTableset</returnType>
    <parameter name="whereClauseXXXDef" type="System.String"><![CDATA[Company = 'CP' AND ProductID = 'EP' AND TypeCode = 'Customization' AND CGCCode = '' AND Key1 = 'WORKQ_DEFAULTVALUES_CC' AND Key2 = 'App.WorkQueueEntry.WorkQueueForm' AND Key3 = '']]></parameter>




  <businessObject>Ice.Proxy.Lib.BOReaderImpl</businessObject>
  <methodName>GetRows</methodName>
  <returnType>System.Data.DataSet</returnType>
    <parameter name="serviceNamespace" type="System.String"><![CDATA[Ice:BO:Company]]></parameter>
    <parameter name="whereClause" type="System.String"><![CDATA[Company = 'CP']]></parameter>
    <parameter name="columnList" type="System.String"><![CDATA[ESEURL,ESENotificationSourceID]]></parameter>


  <businessObject>Ice.Proxy.Lib.BOReaderImpl</businessObject>
  <methodName>GetRows</methodName>
  <returnType>System.Data.DataSet</returnType>
    <parameter name="serviceNamespace" type="System.String"><![CDATA[Ice:BO:UserFile]]></parameter>
    <parameter name="whereClause" type="System.String"><![CDATA[UserID = 'CConn']]></parameter>
    <parameter name="columnList" type="System.String"><![CDATA[ESEUserID,ESEPassword,DomainName,OSUserId]]></parameter>

  <businessObject>Erp.Proxy.BO.EmpBasicImpl</businessObject>
  <methodName>GetList</methodName>
  <returnType>EmpBasicListTableset</returnType>
    <parameter name="whereClause" type="System.String"><![CDATA[EmpID = 'cconn' BY Name]]></parameter>


  <businessObject>Erp.Proxy.BO.CompanyImpl</businessObject>
  <methodName>GetMaxWorkQueueRecords</methodName>
  <returnType>System.Int32</returnType>


  <businessObject>Erp.Proxy.BO.WorkQueueImpl</businessObject>
  <methodName>GetOpsInResourceGroup</methodName>
  <returnType>WorkQueueTableset</returnType>
    <parameter name="pcResourceGrpID" type="System.String"><![CDATA[PRLABOR]]></parameter>
    <parameter name="pcEmpID" type="System.String"><![CDATA[cconn]]></parameter>


  <businessObject>Erp.Proxy.BO.JobOperSearchImpl</businessObject>
  <methodName>GetRows</methodName>
  <returnType>JobOperSearchTableset</returnType>
    <parameter name="whereClauseJobOper" type="System.String"><![CDATA[]]></parameter>



  <businessObject>Ice.Proxy.Lib.ClientCacheImpl</businessObject>
  <methodName>GetClassInformation</methodName>
  <returnType>Ice.Tablesets.ClassAttributeTableset</returnType>
    <parameter name="token" type="System.String"><![CDATA[JCDept]]></parameter>
    <parameter name="additionalTokens" type="System.String[]"><![CDATA[]]></parameter>
    <parameter name="objectAccess" type="System.Boolean"><![CDATA[False]]></parameter>
    <parameter name="nameSpace" type="System.String"><![CDATA[Erp:BO]]></parameter>


<tracePacket>
  <businessObject>Ice.Proxy.Lib.ClassAttributeImpl</businessObject>
  <methodName>GetAttributes</methodName>
  <returnType>ClassAttributeTableset</returnType>
    <parameter name="classNames" type="System.String"><![CDATA[JCDept]]></parameter>
    <parameter name="nameSpace" type="System.String"><![CDATA[Erp.BO]]></parameter>
        <BpmData>
          <SysRowID>0f81d587-c733-47da-87fa-2fdf18b46a7e</SysRowID>
        </BpmData>


  <businessObject>Erp.Proxy.BO.JCDeptImpl</businessObject>
  <methodName>GetList</methodName>
  <returnType>JCDeptListTableset</returnType>
    <parameter name="whereClause" type="System.String"><![CDATA[ BY JCDept]]></parameter>



  <businessObject>Ice.Proxy.BO.NamedSearchImpl</businessObject>
  <methodName>GetRows</methodName>
  <appServerUri>net.tcp://jpe10prod/E10LiveDB2/</appServerUri>
  <returnType>NamedSearchTableset</returnType>
    <parameter name="whereClauseNamedSearch" type="System.String"><![CDATA[ProductID = 'EP' AND SearchForm = 'Resource Group Search' AND CalledFrom = 'Erp.UI.WorkQueueEntry.dll' AND UserId = 'CConn']]></parameter>



  <businessObject>Ice.Proxy.BO.QuickSearchImpl</businessObject>
  <methodName>GetBaseDefault</methodName>
  <appServerUri>net.tcp://jpe10prod/E10LiveDB2/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>12/28/2016 08:39:06:1743869 AM</localTime>
  <executionTime>72</executionTime>
  <parameters>
    <parameter name="likeTableAndField" type="System.String"><![CDATA[ResourceGroup.ResourceGrpID]]></parameter>
    <parameter name="callFrom" type="System.String"><![CDATA[Erp.UI.WorkQueueEntry]]></parameter>
    <parameter name="baseSearchId" type="System.String"><![CDATA[]]></parameter>
    <parameter name="CallContext" type="Ice.Bpm.Context.ContextDataSet">



  <businessObject>Erp.Proxy.BO.ResourceGroupImpl</businessObject>
  <methodName>GetList</methodName>
  <returnType>ResourceGroupListTableset</returnType>
    <parameter name="whereClause" type="System.String"><![CDATA[JCDept = 'MOLDING' BY Description]]></parameter>



  <businessObject>Erp.Proxy.BO.CompanyImpl</businessObject>
  <methodName>GetMaxWorkQueueRecords</methodName>
  <returnType>System.Int32</returnType>
 

  <businessObject>Erp.Proxy.BO.WorkQueueImpl</businessObject>
  <methodName>GetOpsInResourceGroup</methodName>
  <returnType>WorkQueueTableset</returnType>
    <parameter name="pcResourceGrpID" type="System.String"><![CDATA[PRGP0300]]></parameter>
    <parameter name="pcEmpID" type="System.String"><![CDATA[cconn]]></parameter>




>
  <businessObject>Erp.Proxy.BO.OpMasterImpl</businessObject>
  <methodName>GetList</methodName>
  <returnType>OpMasterListTableset</returnType>

    <parameter name="whereClause" type="System.String"><![CDATA[OpCode = 'MOLDING' BY OpDesc]]></parameter>



  <businessObject>Erp.Proxy.BO.LaborImpl</businessObject>
  <methodName>GetRows</methodName>
  <returnType>LaborTableset</returnType>
    <parameter name="whereClauseLaborHed" type="System.String"><![CDATA[ActiveTrans = true AND EmployeeNum = 'cconn' BY PayrollDate]]></parameter>
    <parameter name="whereClauseLaborDtl" type="System.String"><![CDATA[SysRowId = '00000000-0000-0000-0000-000000000000']]></parameter>
    <parameter name="whereClauseLaborDtlAttch" type="System.String"><![CDATA[]]></parameter>
    <parameter name="whereClauseLaborDtlComment" type="System.String"><![CDATA[]]></parameter>
    <parameter name="whereClauseLaborEquip" type="System.String"><![CDATA[SysRowId = '00000000-0000-0000-0000-000000000000']]></parameter>
    <parameter name="whereClauseLaborPart" type="System.String"><![CDATA[SysRowId = '00000000-0000-0000-0000-000000000000']]></parameter>
    <parameter name="whereClauseLbrScrapSerialNumbers" type="System.String"><![CDATA[SysRowId = '00000000-0000-0000-0000-000000000000']]></parameter>
    <parameter name="whereClauseLaborDtlGroup" type="System.String"><![CDATA[SysRowId = '00000000-0000-0000-0000-000000000000']]></parameter>
    <parameter name="whereClauseSelectedSerialNumbers" type="System.String"><![CDATA[SysRowId = '00000000-0000-0000-0000-000000000000']]></parameter>
    <parameter name="whereClauseSNFormat" type="System.String"><![CDATA[SysRowId = '00000000-0000-0000-0000-000000000000']]></parameter>
    <parameter name="whereClauseTimeWeeklyView" type="System.String"><![CDATA[]]></parameter>
    <parameter name="whereClauseTimeWorkHours" type="System.String"><![CDATA[SysRowId = '00000000-0000-0000-0000-000000000000']]></parameter>



  <businessObject>Erp.Proxy.BO.LaborImpl</businessObject>
  <methodName>GetNewLaborDtlOnSelectForWork</methodName>
  <returnType>System.Void</returnType>
  <paramDataSetChanges>
    <paramDataSet name="ds" useDataSetNbr="0">
      <changedValue tableName="LaborHed" rowState="Modified" rowNum="0" colName="RowMod"><![CDATA[U]]></changedValue>
    </paramDataSet>
  </paramDataSetChanges>



  <businessObject>Ice.Proxy.BO.GenXDataImpl</businessObject>
  <methodName>GetList</methodName>
  <returnType>XXXDefListTableset</returnType>
    <parameter name="whereClause" type="System.String"><![CDATA[Key2 = 'WorkQueueEntry.Forms.SelectForWorkForm']]></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>
          <SysRowID>1aef008a-117d-431a-a9e0-9ebf7a13bb9e</SysRowID>
        </BpmData>


  <businessObject>Ice.Proxy.BO.GenXDataImpl</businessObject>
  <methodName>GetList</methodName>
  <returnType>XXXDefListTableset</returnType>
    <parameter name="whereClause" type="System.String"><![CDATA[Key2 = 'WorkQueueEntry.Forms.SelectForWorkForm']]></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>
          <SysRowID>1aef008a-117d-431a-a9e0-9ebf7a13bb9e</SysRowID>
        </BpmData>



  <businessObject>Ice.Proxy.Lib.BOReaderImpl</businessObject>
  <methodName>GetList</methodName>
  <returnType>System.Data.DataSet</returnType>
    <parameter name="serviceNamespace" type="System.String"><![CDATA[Erp:BO:Resource]]></parameter>
    <parameter name="whereClause" type="System.String"><![CDATA[(ResourceGrpID = 'PRGP0300')]]></parameter>
    <parameter name="columnList" type="System.String"><![CDATA[ResourceID,ResourceGrpID,Description]]></parameter>



  <businessObject>Erp.Proxy.BO.LaborImpl</businessObject>
  <methodName>SelectForWork</methodName>
  <appServerUri>net.tcp://jpe10prod/E10LiveDB2/</appServerUri>
  <returnType>System.Void</returnType>


  <businessObject>Erp.Proxy.BO.LaborImpl</businessObject>
  <methodName>CheckWarnings</methodName>
  <appServerUri>net.tcp://jpe10prod/E10LiveDB2/</appServerUri>
  <returnType>System.Void</returnType>


  <businessObject>Erp.Proxy.BO.LaborImpl</businessObject>
  <methodName>CheckFirstArticleWarning</methodName>
  <appServerUri>net.tcp://jpe10prod/E10LiveDB2/</appServerUri>
  <returnType>System.Void</returnType>


  <businessObject>Erp.Proxy.BO.LaborImpl</businessObject>
  <methodName>Update</methodName>
  <appServerUri>net.tcp://jpe10prod/E10LiveDB2/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>12/28/2016 08:39:31:7015325 AM</localTime>
  <executionTime>226</executionTime>


  <businessObject>Erp.Proxy.BO.CompanyImpl</businessObject>
  <methodName>GetMaxWorkQueueRecords</methodName>
  <appServerUri>net.tcp://jpe10prod/E10LiveDB2/</appServerUri>
  <returnType>System.Int32</returnType>




  <businessObject>Erp.Proxy.BO.WorkQueueImpl</businessObject>
  <methodName>GetOpsInResourceGroup</methodName>
  <appServerUri>net.tcp://jpe10prod/E10LiveDB2/</appServerUri>
  <returnType>WorkQueueTableset</returnType>
    <parameter name="pcResourceGrpID" type="System.String"><![CDATA[PRGP0300]]></parameter>
    <parameter name="pcEmpID" type="System.String"><![CDATA[cconn]]></parameter>



  <businessObject>Erp.Proxy.BO.CompanyImpl</businessObject>
  <methodName>GetMaxWorkQueueRecords</methodName>
  <returnType>System.Int32</returnType>


  <businessObject>Erp.Proxy.BO.WorkQueueImpl</businessObject>
  <methodName>GetOpsInResourceGroup</methodName>
  <appServerUri>net.tcp://jpe10prod/E10LiveDB2/</appServerUri>
  <returnType>WorkQueueTableset</returnType>
  <localTime>12/28/2016 08:39:32:8711872 AM</localTime>
  <executionTime>469</executionTime>
  <parameters>
    <parameter name="pcResourceGrpID" type="System.String"><![CDATA[PRGP0300]]></parameter>
    <parameter name="pcEmpID" type="System.String"><![CDATA[cconn]]></parameter>

<tracePacket>
  <businessObject>Erp.Proxy.BO.LaborImpl</businessObject>
  <methodName>GetRows</methodName>
  <appServerUri>net.tcp://jpe10prod/E10LiveDB2/</appServerUri>
  <returnType>LaborTableset</returnType>
    <parameter name="whereClauseLaborHed" type="System.String"><![CDATA[EmployeeNum = 'cconn' and ActiveTrans = yes BY PayrollDate]]></parameter>

That method in your trace doesn’t appear to take any parameters in? Furthermore notice that they set the RowMod on LaborHead to U. Are you doing this?

  <businessObject>Erp.Proxy.BO.LaborImpl</businessObject>
  <methodName>GetNewLaborDtlOnSelectForWork</methodName>
  <returnType>System.Void</returnType>
  <paramDataSetChanges>
    <paramDataSet name="ds" useDataSetNbr="0">
      <changedValue tableName="LaborHed" rowState="Modified" rowNum="0" colName="RowMod"><![CDATA[U]]></changedValue>
    </paramDataSet>
  </paramDataSetChanges>

I assumed that was showing me that that call had made those changes. Am I wrong?

Here is the unabridged version of that call:

 <businessObject>Erp.Proxy.BO.LaborImpl</businessObject>
  <methodName>GetNewLaborDtlOnSelectForWork</methodName>
  <appServerUri>net.tcp://jpe10prod/E10LiveDB2/</appServerUri>
  <returnType>System.Void</returnType>
  <localTime>12/28/2016 08:39:21:4348315 AM</localTime>
  <executionTime>93</executionTime>
  <parameters>
    <parameter name="ds" type="LaborDataSet">
      <LaborDataSet xmlns="http://www.epicor.com/Ice/300/BO/Labor/Labor">
        <LaborHed>
          <Company>CP</Company>
          <EmployeeNum>cconn</EmployeeNum>
          <LaborHedSeq>3645</LaborHedSeq>
          <PayrollDate>2016-10-19T00:00:00-05:00</PayrollDate>
          <Shift>1</Shift>
          <ClockInDate>2016-10-19T00:00:00-05:00</ClockInDate>
          <ClockInTime>0.28</ClockInTime>
          <DspClockInTime>00:17</DspClockInTime>
          <ActualClockInTime>0.28</ActualClockInTime>
          <ActualClockinDate>2016-10-19T00:00:00-05:00</ActualClockinDate>
          <LunchStatus>N</LunchStatus>
          <ActLunchOutTime>0.00</ActLunchOutTime>
          <LunchOutTime>0.00</LunchOutTime>
          <ActLunchInTime>0.00</ActLunchInTime>
          <LunchInTime>0.00</LunchInTime>
          <ClockOutTime>0</ClockOutTime>
          <DspClockOutTime>24:00</DspClockOutTime>
          <ActualClockOutTime>0</ActualClockOutTime>
          <PayHours>0.00</PayHours>
          <FeedPayroll>false</FeedPayroll>
          <TransferredToPayroll>false</TransferredToPayroll>
          <LaborCollection>true</LaborCollection>
          <TranSet></TranSet>
          <ActiveTrans>true</ActiveTrans>
          <ChkLink></ChkLink>
          <BatchTotalHrsDisp></BatchTotalHrsDisp>
          <BatchHrsRemainDisp></BatchHrsRemainDisp>
          <BatchHrsRemainPctDisp></BatchHrsRemainPctDisp>
          <BatchSplitHrsMethod></BatchSplitHrsMethod>
          <BatchAssignTo>false</BatchAssignTo>
          <BatchComplete>false</BatchComplete>
          <BatchTotalHrs>0.00000</BatchTotalHrs>
          <BatchHrsRemain>0.00000</BatchHrsRemain>
          <BatchHrsRemainPct>0.00000</BatchHrsRemainPct>
          <SysRevID>585442701</SysRevID>
          <SysRowID>280f8dff-1cb2-4ff1-98b6-5267b66e259e</SysRowID>
          <Imported>false</Imported>
          <BatchMode>false</BatchMode>
          <DspPayHours>0.00</DspPayHours>
          <EmpBasicShift>1</EmpBasicShift>
          <EmpBasicSupervisorID></EmpBasicSupervisorID>
          <GetNewNoHdr>false</GetNewNoHdr>
          <ImagePath>empphoto/CP/.bmp</ImagePath>
          <LunchBreak>false</LunchBreak>
          <MES>false</MES>
          <TimeDisableDelete>false</TimeDisableDelete>
          <TimeDisableUpdate>false</TimeDisableUpdate>
          <TotBurHrs>40.29</TotBurHrs>
          <TotLbrHrs>49.21</TotLbrHrs>
          <WipPosted>false</WipPosted>
          <BitFlag>0</BitFlag>
          <EmployeeNumFirstName>Chris</EmployeeNumFirstName>
          <EmployeeNumName>Chris P Conn</EmployeeNumName>
          <EmployeeNumLastName>Conn</EmployeeNumLastName>
          <ShiftDescription>7:00 AM to 3:00 PM</ShiftDescription>
          <RowMod>U</RowMod>
        </LaborHed>
      </LaborDataSet>
    </parameter>
    <parameter name="laborHedSeq" type="System.Int32"><![CDATA[3645]]></parameter>
    <parameter name="sJobNum" type="System.String"><![CDATA[F000007827]]></parameter>
    <parameter name="iAssemblySeq" type="System.Int32"><![CDATA[0]]></parameter>
    <parameter name="iOprSeq" type="System.Int32"><![CDATA[10]]></parameter>
    <parameter name="sResourceGrpID" type="System.String"><![CDATA[PRGP0300]]></parameter>
    <parameter name="setupOrProd" type="System.String"><![CDATA[B]]></parameter>
    <parameter name="bMachinePrompt" 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>
          <SysRowID>00000000-0000-0000-0000-000000000000</SysRowID>
        </BpmData>
      </ContextDataSet>
    </parameter>
  </parameters>
  <paramDataSetChanges>
    <paramDataSet name="ds" useDataSetNbr="0">
      <changedValue tableName="LaborHed" rowState="Modified" rowNum="0" colName="RowMod"><![CDATA[U]]></changedValue>
    </paramDataSet>
  </paramDataSetChanges>

Right but if you see the paramDataSetChanges that means changes to the dataset that occurred before calling the method, so set LaborHed.RowMod=“U”

Make those changes in the Labor dataset or in the DB?

In the LaborDataset set the LaborHed.RowMod=“U” (RowMod doesn’t exist in the data set)

I am going with:
var lbr = adapterLabor.GetRows(opts, out more);
lbr.Tables[0].Rows[0][“RowMod”] = “U”;

No apparent change. Let me check the trace.

Sure! However you can use the typed dataset to make your life easier, using quoted strings is error prone

LaborDataSet lds = adapterLabor.GetRows(opts, out more);
lds.LaborHed[0].RowMod="U";

Also I think your adapterLabor is named wrong… is that an adapter? Adapters (generally) don’t return values. How are you instantiating that? (Edit never mind, but you can still cast it to LaborDataSet)

private LaborAdapter adapterLabor;
adapterLabor = new LaborAdapter(this.oTrans);
adapterLabor.BOConnect();
...
SearchOptions opts = new SearchOptions(SearchMode.AutoSearch);
bool more;
opts.PageSize = 20; //return this many
string whereSeq = string.Format("ActiveTrans = TRUE and EmployeeNum = '{0}' and COMPANY = '{1}'",((Ice.Core.Session)oTrans.Session).EmployeeID.ToString(),((Ice.Core.Session)oTrans.Session).CompanyID.ToString());
opts.NamedSearch.WhereClauses.Add("LaborHed",whereSeq); 
adapterLabor.LaborData.Clear();
var lbr = adapterLabor.GetRows(opts, out more);

Yeah never mind I saw it after I posted, you can cast that var lbr into a LaborDataSet to make your life easier (I think)
Can you post your entire code I think I know what your issue is.