# How do I get the column name from a DeltaChange (NewValues row)

**URL:** https://talk.remobjects.com/t/how-do-i-get-the-column-name-from-a-deltachange-newvalues-row/30836
**Category:** Data Abstract
**Tags:** net
**Created:** [September 23, 2024, 3:01pm UTC](https://talk.remobjects.com/t/how-do-i-get-the-column-name-from-a-deltachange-newvalues-row/30836 "2024-09-23T15:01:02Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![fvancrae](https://talk.remobjects.com/letter_avatar_proxy/v4/letter/f/ad7895/32.png) [@fvancrae](https://talk.remobjects.com/u/fvancrae)
#### Post date: [September 23, 2024, 3:01pm UTC](https://talk.remobjects.com/t/how-do-i-get-the-column-name-from-a-deltachange-newvalues-row/30836/1 "2024-09-23T15:01:02Z")

</div>

I have a DeltaChange object where I need to process all values in the NewValues row.  
I need to identify the column name for each index.  
How do I obtain this column name?  
I am now using Delta.Schema.Fields but this list has more entries if not all fields in the schema has LogChanges.  
Is it safe to make a list by taking the LogChange=True fields? Is there a better approach?

---

<div class="post-metadata">

### Author: ![EvgenyK](https://talk.remobjects.com/user_avatar/talk.remobjects.com/evgenyk/32/16_2.png) [@EvgenyK](https://talk.remobjects.com/u/EvgenyK)
#### Post date: [September 24, 2024, 8:20am UTC](https://talk.remobjects.com/t/how-do-i-get-the-column-name-from-a-deltachange-newvalues-row/30836/2 "2024-09-24T08:20:59Z")

</div>

Hi,

You can use something like:

```oxygene
var list := e.Delta.Schema.Fields.Where(f-> 
    f.LogChanges or f.InPrimaryKey or f.ServerAutoRefresh).ToList;

```

We use similar checking in `GetFieldIndexInValueArray`:

```oxygene
method Delta.GetFieldIndexInValueArray(fieldName: String): Int32;
begin
  var lResult: Int32 := -1;

  for each field: SchemaField in self.Schema.Fields do begin
    var lMatch: Boolean := String.Equals(fieldName, field.Name, StringComparison.OrdinalIgnoreCase);
    var lInArray: Boolean := field.LogChanges or field.InPrimaryKey or field.ServerAutoRefresh;

    if (lMatch and (not lInArray)) then
      break;

    if lInArray then begin
      inc(lResult);
      if (lMatch) then
        exit lResult;
    end
  end;

  exit -1;
end;

```

---

<div class="post-metadata">

### Author: ![fvancrae](https://talk.remobjects.com/letter_avatar_proxy/v4/letter/f/ad7895/32.png) [@fvancrae](https://talk.remobjects.com/u/fvancrae)
#### Post date: [September 24, 2024, 11:46am UTC](https://talk.remobjects.com/t/how-do-i-get-the-column-name-from-a-deltachange-newvalues-row/30836/3 "2024-09-24T11:46:16Z")

</div>

Thanks for the info: I created something similar with only f.LogChanges but my code needs to be an exact match.  
Some kind of API interface is probably more future proof
