Came across a new table for me...ice.PatchFld.... What is this?

Does anyone know what Ice.PatchFld is and why it’s there? I see an old SSRS report using it to source values from… and I’m trying to dig deep in my mind to relate it to anything @hkeric.wci has taught me about linking UD fields to each other across tables like OrderDtl → QuoteDtl where the UD field you have is “color” or something like that and you want that value to copy over to the orderdtl when the quote is pulled through… idk… really stretching it here. Not sure what this table is.

PatchFld contains fields added by minor updates (which is why they call it “patch fields”). These added fields are rolled up into to the main tables on the next major release.

6 Likes

Nuts John, thank you. Must mean that they (the consultants) knew that the field they wanted was available in this table at the time, so they made use of it since upgrading probably wasn’t in the cards at that time. Very interesting move.

Although back in the good ol’ days (around the time @klincecum was born), the “next major release” really meant “real soon now”. I think the field that became PORel.LockQty was in there throughout V8 and E9…

1 Like

it’s all making sense now…

I always thought that RDDs and BAQs made this linkage for you in the background. If the report was hitting the database directly, then I can see why they called PatchFld directly.

1 Like

I have no clue why this was done Mark.

Its a table to throw anything at. DotNetIT stores their Licensing information there. When you run GetShipments on an Invoice it builds the data there and uses it as a temp-table etc… Your EDI settings atleast the Path is stored there as well.

So not everything ever made it into Major Releases and the table has been used for alot more I think there are other tables I cant think of Local01, Local02 or something. Maybe im mixing some of those.

If you ever need to write data in there and then read it in some later BPM (temporarily) its a good table for that :slight_smile: Local001 I hate to call them, are like trash tables lol.

Tiny snippet if anyone needs to read a PatchFld

// GetPatchField("XaSyst", "inboundFilePath");
private string GetPatchField(string sTableName, string sFieldName)
{
    // Ice.Contracts.Lib.BOReader Must be Added to Assembly
    using (Ice.Proxy.Lib.BOReaderImpl bor = WCFServiceSupport.CreateImpl<Ice.Proxy.Lib.BOReaderImpl>((Ice.Core.Session)oTrans.Session, Epicor.ServiceModel.Channels.ImplBase<Ice.Contracts.BOReaderSvcContract>.UriPath))
    {
        string whereClause = string.Format("Company = '{0}' and TableName = '{1}' and FieldName = '{2}'", ((Ice.Core.Session)oTrans.Session).CompanyID, sTableName, sFieldName);
        DataSet ds = bor.GetRows("Ice:BO:PatchFld", whereClause, string.Empty);
 
        if (ds != null && ds.Tables.Contains("PatchFld") && ds.Tables[0].Rows.Count > 0)
        {
            return ds.Tables["PatchFld"].Rows[0]["DataCharacter"].ToString();
        }
    }
 
    return string.Empty;
}
5 Likes

:rofl:

Sometimes called “Property Bags” too!

1 Like

Thanks a ton for taking the time to respond and give that snippit.

For the record, I did look this up in the CHM first before posting :wink: but I couldn’t figure it out.

That table has been around foooooorrrrrr soooooooo lonnnnnnnng :slight_smile: