Jump to content

Scripts, Value List items and Set Field?


Recommended Posts

How do I set a field with a value list item from a script, from a set of tick box values? .. or remove a value list item, but leave whatever else is there alone?

Looks like GetValue with the name of the value list and the position # of the value, but I'm sure that also means that if I change that value list, I need to change any scripts that reference them by position # too..

Something like detecting if a string is already there, and if not add it, surrounded by C/Rs, unless it's the first item entry?

For the first time a field is set, I presume I could just Set Field (field ; "Value List Item"), and if there's only one entry/line in it, just clear it.  But if there's already a value there, I just want to select an additional one.

Link to post
Share on other sites

If you attach a value list to a field, you designate that value list entry option (list, menu, check box, radio) to be *THE* input method.

If you are trying to capture the user's selection from the value list don't want that selection into the field as-is then you're misusing the value list input.

And there would be no need to try and read values from the value list directly with GetValue().

So I think you need to explain this with a example and some screenshots because it sounds like you're going down a wrong path.

Perhaps this will be a case where you do not want to have multiple values stored in one field but that you need to create records in a join table.

So walk us through your specific example.

Link to post
Share on other sites

A field formatted as a checkbox set hold a return-separated list of selected values.

To add a value to the field, you could simply set the field to:

List ( YourTable::YourField ; "New Value" )

There is no need to select the value from a value list (unless you want to, for some other reason). Naturally, if the added value is not a member of the value list associated with the checkbox field, then the field will not display a check for it (or display it at all).

If you are not sure if the new value is already in the field, then use the UniqueValues() function at the end. Or test first by:

IsEmpty ( FilterValues ( "New Value" ; YourTable::YourField ) )


Removing a value is a bit more tricky. Basically, the process is: (1) add leading and trailing returns to the list; (2) substitute the removed value - with leading and trailing return - by a single return and (3) remove the added returns. 

 

Edited by comment
Link to post
Share on other sites
  • 1 month later...
  • Newbies

I would like to expand on this question if I may.  I have a value list composed of 10 values.  The field is set to display as checkboxes.  Now I want to have a push button to check all boxes.  Likewise I want a button to uncheck all checkboxes.  I don’t have a problem with the unchecking part but I do with checking all of the boxes.

The script I made has one line which uses the “Set Field” function.  For example I have Entered:

Set Field[table::field, “value list item1”] and it checks off that one checkbox.  However, the problem comes in when I try to set more than one value.  I have tried:

Set Field[table::field,”value list item1|value list item2” but neither get checked.  I have tried other delimiters such as the comma, semi-colon, colon and a space but nothing seems to work.  Can anyone tell me what I might be doing wrong?

Thanks in advance.

Link to post
Share on other sites

You were so close! A field that is formatted with a checkbox value list delimits each value with a return ¶.

Set Field[table::field; "valuelistitem1¶valuelistitem2"] or

Set Field[table::field;  List ("valuelistitem1" ; "valuelistitem2" ; "valuelistitem3" ) ] or

use the value list name

Set Field[table::field; ValueListItems ("" ; "MyValueListName") ]

 

to clear

Set field [table::field, ""]

Link to post
Share on other sites
  • Newbies

Thank you for the quick reply.  I don’t think I would have ever tried the return as a delimiter but it definitely makes sense. Thank you so much. I looked for the answer on the web just about all day yesterday and I came up empty. I joined the forum today and had my solution within minutes of posting my question. This is an extremely valuable forum!

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Similar Content

    • By John Link
      I have a field named "Databases" with the following values: "CORD", "SDHS", "Y Ballet". This field is displayed as a checkbox set. I recently learned that "CORD" should have been "DSA", so I naively changed "CORD" to "DSA" in the value list but then none of the records that were checked for "CORD" were checked for "DSA", which reminded me that the values in the value list are the values of the field Databases and not labels for checkboxes. I revised the value list to again include "CORD" and its checkbox is again checked for all the records for which it was originally checked.

      I wrote a script, shown in one of the attachments, to insert "DSA" into the Databases field for each of the records that contains "CORD" in that field. When I run the script I get an error message saying "Databases" is defined to contain only specific values, and that I must enter a valid value. How can DSA not be a valid value when it is included in the value list for the field? How can I accomplish what I want to do?

      Does programming scripts in FileMaker ever get easier? I don't write many scripts, but when I do I find it surprisingly difficult to accomplish what I think would be the simplest of tasks.

      Thanks in advance for your help,
      John Link


    • By Tony Diaz
      The tables.
      Items::ID
      Items::Item
      Items::Publisher
      Items::Date
       
      The Genre data is already arranged like this:
      Genre::ID (Unique Key)
      Genre::Name
      Genre::Category_ID
      Genre::Category

      The Platform data is 'simple'. ID and Name. But each item could be multiple platforms.  (Example #1 vs. Example #2)
      Platforms::ID
      Platforms::Name
      An item can have multiple Genre Categories related to it, and those usually have a single choice from within their Category, but might have multiples.

      It's supporting the possible multiples that I'm trying to work out. At this point there's 15 possible Genre Categories that each Item could have a selection from. Most have 4-6 of them.

      Example 1: Items::Table on the left, Genre::Table on the right, with some Genre Categories (Genre, Perspective, Pacing, Gameplay, Interface, Setting) and their sub-options.
      This one has just one sub-option per category.

      Example 2:  The Gameplay Genre Category has two sub-options related to it.



      Example Genre Table content:

       
      Just cracking the surface on One to One and One to Many relationships, I don't think this scenario is quite covered this way.

      Would each of those Genre Categories be portals showing only their related category ID?

      I presume that I would add fields to the Items::Table so I can pull related records:
      Items::Platform_IDfk
      Items::Genre_IDfk
      Items::Category_IDfk
      But those only support one relationship.
      Would I make value lists from those Genre Categories and Platforms and set them as tick box fields?
       
    • By emncwundy
      I have two iPads connected to FM server. For some reason one ipad (5th Gen running 13.5) will not complete the navigation scripts and shows error messages (no records match this find criteria), however the 7th Gen running on 13.1.1 works fine..... Issue has only begun after purchasing the second, newer iPad. I cannot for the life of me work out what is wrong, or how to troubleshoot and would love some guidance please!! Here is a screengrab of one of the scripts and related layout:
      fm go script issue.tiff Orders iPad layout.tiff
    • By PatrickDes
      Hello everyone,
      I have a Preference table with status options. The user can create a new status and through a script can assign a color (see attachment). The calculation is the following: 
      Allow user abort [off]
      Set error capture [on]
      Set variable [$start ;  value: Get ( ActiveSelectionStart )]
      Set variable [$end ;  value: Get ( ActiveSelectionStart ) + Get ( ActiveSelectionSize ) -1 ]
      Insert Calculated Result [ TextColor ( Middle ( Get ( ActiveFieldContents ) ;  Get ( ActiveSelectionStart ) ; Get ( ActiveSelectionSize) ) ; Get ( ScriptParameter ) ) ]
      Set Selection [ StartPosition : $start ; End Position : Send$ ]
      The ScriptParameter has the color values in RGB: RGB ( 237; 41; 190).
      The Status field is pulled into a Value List for the Product table. Is it possible, once the status is used in the Product table , to convert the text color into a conditional formatting? Is my approach wrong? I am trying to give the user some flexibility.
      Thank you for guiding me.


    • By Agnes Riley
      I'm getting "The file "" could not be opened. Either the host is unavailable, or the file is not available on that host."
      This happens when a script runs. Not a new server, no new files. The file is actually open in the background. The file reference is just "file:".
      I restarted the server. Didn't fix it.
      FMS18.03
      It's apparently intermittent. I copied all the script steps to a new script, then it worked 3 times, but couldn't find the file for the 4th time.
      Any ideas?
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.