1

Is it possible in AL Language to get a value from a table using the column name as stored in a string?

var 
    myColumn: Text;
    myValue: Text;
    myTable: Record "My Table";

// User will select this
myColumn := 'Name';

// This is what I would like to do or similar
// This should get the value thats held in myTable.Name
myValue := myTable.MyColumn.Value; 

I need to do this as the column I need is determined by the user at runtime so it cant be hardcoded.

All help appreciated!

Dermo909
  • 128
  • 7

1 Answers1

1

You can use method FindFieldByName defined on codeunit 701 "Data Type Management":

pageextension 50111 "Customer Card Ext" extends "Customer Card"
{
    trigger OnOpenPage()
    var
        DataTypeManagement: Codeunit "Data Type Management";
        RecRef: RecordRef;
        FldRef: FieldRef;
        Cust: Record Customer;
        fieldName: Text;
    begin
        fieldName := 'Name';
        if Cust.Get(Rec."No.") then begin
            if DataTypeManagement.GetRecordRef(Cust, RecRef) then
                if DataTypeManagement.FindFieldByName(RecRef, FldRef, fieldName) then
                    Message(FldRef.Value);
        end;
    end;
}
XMehdi01
  • 5,538
  • 2
  • 10
  • 34