mdfOffman Posted February 8, 2024 Posted February 8, 2024 I want to access document records in table Doc from many different tables For that I create a variable $Doc I want to set the $Doc variable as either: Get(ActiveFieldTableName) & "::" & fkDoc ; or Get(ScriptParameter) & "::" & fkDoc FM rejects it saying that it can't find the table. I've tried all sorts of different places to put the " ", without success. Is there any way I can achieve the desired result? Just in case it is not clear aboe, the Script Parameter would be the calling table name
comment Posted February 8, 2024 Posted February 8, 2024 4 minutes ago, mdfOffman said: I want to access document records in table Doc from many different tables For that I create a variable $Doc I am not sure how this is supposed to work, and what role the variable is going to play in this. 4 minutes ago, mdfOffman said: I want to set the $Doc variable as either: Get(ActiveFieldTableName) & "::" & fkDoc ; or Get(ScriptParameter) & "::" & fkDoc If you are doing this in a script, then you must refer to the field using its fully-qualified name, e.g. Get(ActiveFieldTableName) & "::" & SomeTO::fkDoc But this makes no sense, because then the result will look something like: ActiveTO::123 which doesn't seem useful for anything. You probably want to do: Get(ActiveFieldTableName) & "::fkDoc" to get a result like: ActiveTO::fkDoc but this has its its own problems: first, the variable holds a text, not a field reference. And you will be hardcoding the field's name, so your code will break if it changes. And again, I don't see how having this gets you closer to your stated goal.
mdfOffman Posted February 11, 2024 Author Posted February 11, 2024 To clarify my question, I am trying to set the current fkDoc record into the variable $Doc. But, because this Script will be called from many different tables, I can't hard code the table name into the variable definition. I can find the table name from Get(ActiveFieldTableName) or by making it the Script parameter. But FM is insisting that I hard code the table name which means I would have to have more than 30 "If" statements e.g. if Get(ActiveFieldTableName) = "Party Doc" ; $Doc = Party Doc::fkDoc I'm trying to avoid having more than 30 "if" statements. Thanks
comment Posted February 11, 2024 Posted February 11, 2024 (edited) 1 hour ago, mdfOffman said: I am trying to set the current fkDoc record into the variable $Doc. That doesn't really clarify the question. Your attempt seems to be get the name of the field - to be more precise, the fully qualified name of the field in the current layout's table occurrence whose local name is fkDoc. This could be done using the expression: Get(LayoutTableName) & "::fkDoc" Do note that this uses the Get(LayoutTableName) function to get the name of the table of the current layout. The Get(ActiveFieldTableName)function you are trying to use will return a result only when a field has focus - and if that field happens to be a related field, the function will return the name of the related table. But then the rest of your post suggests you actually want to get the value from that field - so that would be: GetField ( Get(LayoutTableName) & "::fkDoc" ) I hope this gets you closer to your original goal, although I still don't see exactly how. And I repeat my warning about hardcoding the field's local name. Edited February 11, 2024 by comment
mdfOffman Posted March 3, 2024 Author Posted March 3, 2024 Wow! for some reason, this reply didn't forward to me and I only just came across it 😞 This works nicely from the main layout. How do I get the Field data from a Portal row? Thanks so much for all your help
comment Posted March 3, 2024 Posted March 3, 2024 21 minutes ago, mdfOffman said: How do I get the Field data from a Portal row? I am not aware of a function similar to Get(LayoutTableName) for portal fields. I can think of some elaborate workarounds, but ... If your purpose is to get the field's data, why don't you simply make the field itself the script parameter, without any indirection?
mdfOffman Posted March 3, 2024 Author Posted March 3, 2024 Why can't I get the content of a Portal Field by making that field a button and something like GetField(Get(ActiveFieldContents)) or GetField(Get(ActiveFieldTableName) & "::fkProject") or something like that? It doesn't pick up the field content /value.
comment Posted March 3, 2024 Posted March 3, 2024 9 minutes ago, mdfOffman said: Why can't I get the content of a Portal Field by making that field a button Because clicking a button does not activate the field that is grouped with it. Quite the opposite, making the field a button prevents entry to the field.
mdfOffman Posted March 3, 2024 Author Posted March 3, 2024 Even simpler, why can't I create a button of a field with a simple number in it and, when I click it, Set variable $Project; Get(ActiveFieldContents)???
comment Posted March 3, 2024 Posted March 3, 2024 Because .... (exactly what I just said). We are going in a circle. If you want the parameter to be the field's value, you won't find a simpler method than making the field itself the script parameter. This is a one-time setting for each button - and it has the further advantage of not hard-coding anything.
Solution mdfOffman Posted March 7, 2024 Author Solution Posted March 7, 2024 Ha! I worked it out in the shower after I posted those questions that making the field a button meant I never entered the field. So I changed it from a button to a script trigger and Get(ActiveFieldContents) works perfectly But that 's a kludge because you have to make the field look/behave like a button. Your idea is clearly superior. GetField(Get(ScriptParameter) & "::fkProject") works perfectly and saves me about 100 separate scripts across the different targets!!! Dear Comment, I would like to thank you from the bottom of my heart for your patience and guidance. Over the last year or so, I have built, starting as an almost complete beginner, a major fully functional app and every single breakthrough I made was as a result of your help and guidance. Now I'm ready to take it to the professionals to do the user management/security. Thank you
Recommended Posts
This topic is 534 days old. Please don't post here. Open a new topic instead.
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 accountSign in
Already have an account? Sign in here.
Sign In Now