You could create an extra date-field 'firstRunDate' in the child table. Having that would allow you to have a TO of the children sorted on this date, so in the parent layout you could simply take the first available record from this TO.
The interesting bit is the setup of the date field: make it an AutoEnter-field with the 'Do not replace...' option turned off. This way the field will be updated when the firstrun text-field is updated and otherwise be left alone.
The auto-enter calculation could be like this:Let([monthAbbr = Upper(Left ( LeftWords ( firstRun ; 1 ) ; 3 ) );month =Case (monthAbbr = "JAN"; 1;monthAbbr = "FEB"; 2;monthAbbr = "MAR"; 3;monthAbbr = "APR"; 4;monthAbbr = "MAY"; 5;monthAbbr = "JUN"; 6;monthAbbr = "JUL"; 7;monthAbbr = "AUG"; 8;monthAbbr = "SEP"; 9;monthAbbr = "OCT"; 10;monthAbbr = "NOV"; 11;monthAbbr = "DEC"; 12;0 // default);day = GetAsNumber ( MiddleWords ( firstRun ; 2 ; 1 ) );year = GetAsNumber ( MiddleWords ( firstRun ; 3 ; 1 ) )];If (month > 0;Date ( month ; day ; year ); // valid date"" // invalid date))I have formatted this hoping you will be able to figure out what is happening here...Using this you would not need the other calculations and the value list. The extra child TO would be handled differently; sorted on the firstRunDate field for starters and maybe add an extra relationship between this table and the parent table to exclude empty firstRunDate fields as these would have an invalid firstrun-date.As a side-note: if there are other places where you would need the monthNumber, you could make a user-function of the case-statement.Let me know if you have any questions.
Ahh, thanks so much, Jan. This is much better. I've already changed everything and it works great. Really appreciate the help.