Help with NaN script result in a table

Tap Forms – Organizer Database App for Mac, iPhone, and iPad Forums Script Talk Help with NaN script result in a table

Tagged: 

Viewing 6 reply threads
  • Author
    Posts
  • August 20, 2024 at 12:08 AM #51011

    tapforms_user
    Participant

    Hi I’m new to Tapforms and really enjoying the product.

    I’m having some difficulty with a script to run in a table. It should run the calculation on column name “G2” and then return a number value in column “G” but instead it populates NaN in the fields of column G. I have checked that column G2 is set to field, which it is, and the values in column G are all numbers. Column G is of course set as a script.

    Can anyone perhaps see where I have gone wrong? Or perhaps this is a common error with a known tip to correct it?

    Edit: I added the script as an attachment in a text file as I am not sure how to copy it in here.

    • This topic was modified 2 months, 3 weeks ago by tapforms_user. Reason: Added script in text file attachment
    • This topic was modified 2 months, 3 weeks ago by tapforms_user.
    • This topic was modified 2 months, 3 weeks ago by tapforms_user.
    Attachments:
    You must be logged in to view attached files.
    August 20, 2024 at 6:36 AM #51016

    tapforms_user
    Participant

    I mean I have checked that column G is set to a “Number” field.

    • This reply was modified 2 months, 3 weeks ago by tapforms_user. Reason: Typo fix
    August 20, 2024 at 7:49 AM #51020

    Daniel Leu
    Participant

    There are two issues I see: “var value = record.getFieldValue(‘G2’);” and “record.setFieldValue(‘G’, resultG);”. Both functions expect a field id not a field name. So either you change it to “getFieldValue(‘fld-xxxx’)” with ‘xxxx’ being the number you get in the editor (click on the field, then ID), or use “record.getFieldValue(form.getFieldNamed(‘G2’).getId(), resultG);”, same for record.setFieldValue();.

    Additionally, after you set the value, you have to add a document.saveAllChanges(); to get your results into the database.

    Hope this helps.

    • This reply was modified 2 months, 3 weeks ago by Daniel Leu.
    • This reply was modified 2 months, 3 weeks ago by Daniel Leu.
    • This reply was modified 2 months, 3 weeks ago by Daniel Leu.
    August 20, 2024 at 1:06 PM #51024

    tapforms_user
    Participant

    There are two issues I see: “var value = record.getFieldValue(‘G2’);” and “record.setFieldValue(‘G’, resultG);”. Both functions expect a field id not a field name. So either you change it to “getFieldValue(‘fld-xxxx’)” with ‘xxxx’ being the number you get in the editor (click on the field, then ID), or use “record.getFieldValue(form.getFieldNamed(‘G2’).getId(), resultG);”, same for record.setFieldValue();. Additionally, after you set the value, you have to add a document.saveAllChanges(); to get your results into the database. Hope this helps.

    This is a huge help. Thank you! I tested your recommendations using another more simple script to concatenate different fields in the table – I had also been struggling with this. Switching to ID and adding the save changes fixed everything! Thank you! I had been battling with this for hours.

    How can I get the script to run automatically? I.e. to populate the destination field ID when data is entered into the fields it is pulling the data from.

    August 20, 2024 at 2:35 PM #51025

    Daniel Leu
    Participant

    Great that you got it working!

    To run the script automatically, you would need to create a field script. It’s just like another field, but has the script attached to it. Usually with a field script, you wouldn’t update a field in all records. Depending on the number of records, you might notice a performance issue.

    August 22, 2024 at 4:39 PM #51033

    tapforms_user
    Participant

    Hi coming back to the more simple script. It’s working great thanks to your help. Now I would like to also add (concatenate) some fields from another table (but on the same form). I’ve tried using the field ID’s from both tables but it returns 1 or undefined.

    What I’d like to know is: Is it possible to concatenate multiple fields from 2 different tables? if yes, what must I add to the script?

    August 22, 2024 at 10:36 PM #51034

    Daniel Leu
    Participant

    Something like this:

    function xxx (){
    
    var a = record.getFieldValue('fld-xxx');
    
    var b = record.getFieldValue('fld-xxx');
    
    var c = a + " some text " + b;
    
    console.log("Result: " + c);
    
    ...
    
    }

    The ‘+’ is used to concatenate strings.

    • This reply was modified 2 months, 3 weeks ago by Daniel Leu.
    • This reply was modified 2 months, 3 weeks ago by Daniel Leu.
    • This reply was modified 2 months, 3 weeks ago by Daniel Leu.
Viewing 6 reply threads

You must be logged in to reply to this topic.