Alpha Software Mobile Development Tools:   Alpha Anywhere    |   Alpha TransForm subscribe to our YouTube Channel  Follow Us on LinkedIn  Follow Us on Twitter  Follow Us on Facebook

Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

Help with Basic Calculated Field

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Help with Basic Calculated Field

    I am trying to create a calculated field that is a nested if then else that results in a character field. How do i go about doing this? For example:

    If a="Y" and b="N"
    then war="1 Year"
    else if a="T" and b="S"
    then war="2 year"
    else if a="R" and b="Z"
    then war="3 Year"
    else war="None"

    I know how to make the if then else statement but don't know how to place it in the calculated field expression.

    #2
    Re: Help with Basic Calculated Field

    When working with expressions you don't use the statement version as you would in a script. Instead you use the if() function. The expression would be
    Code:
    If(a="Y" .and. b="N","1 Year",if(a="T" .and. b="S","2 Year",if(a="R" .and. b="Z","3 Year","None")))
    You might also check out the case() function.

    If the expression gets more complicated or you want to use it in multiple locations or in combination as part of another expression you could make it a UDF (user defined function) on the code tab.

    Code:
    FUNCTION get_war AS C (a as C,b as C )
        
        select
            case a="Y" .and. b="N"
                Get_War = "1 Year"
            case a="T" .and. b="S"
                Get_War = "2 Year"
            case a="R" .and. b="Z"
                Get_War = "3 Year"
            case else
                Get_War = "None"
        end select    
        
    END FUNCTION
    Save this in a new function named Get_War and then in the calculated field you would enter Get_War(a,b) where a and b hold the values.
    Tim Kiebert
    Eagle Creek Citrus
    A complex system that does not work is invariably found to have evolved from a simpler system that worked just fine.

    Comment


      #3
      Re: Help with Basic Calculated Field

      Hi Tim,

      Save this in a new function named Get_War and then in the calculated field you would enter Get_War(a,b) where a and b hold the values.
      Could you show me little be more detail what to do after save the function.

      Comment


        #4
        Re: Help with Basic Calculated Field

        I am not really sure what other details to give you. Once the function is saved to the code tab like any other function you just use it where you need to, supplying the needed parameters as defined by the function. In this case the parameters are a and b. They are character, so you would need to supply some character value such as a quoted string or a character type variable.

        As far as the specifics of this function I have no idea on what it is/was being used for. It may very well have just been some sample to illustrate the question. As per the first post here the initial question was about nested ifs and this was just an alternate suggestion.
        Tim Kiebert
        Eagle Creek Citrus
        A complex system that does not work is invariably found to have evolved from a simpler system that worked just fine.

        Comment


          #5
          Re: Help with Basic Calculated Field

          Tim's solution as a function is quite functional. The translation of your original question about if..else..end if into the expression usable if(logical test, true result, false result) could be....

          Code:
          If(a="Y" and b="N","1 Year",if(a="T" and b="S","2 year",if(a="R" and b="Z","3 Year","None")))
          There can be only one.

          Comment


            #6
            Re: Help with Basic Calculated Field

            Good morning Tim and Stan,

            I was looking for How to fire(? I am not right word but I picked from an alpha book) the Function in the Table level.

            In my sample, I have a function and named Tax_state(). I want to apply it on my payroll form at Table Level.

            This application is one of my problem work with the Xbasic

            I have attached the zip file.

            Comment


              #7
              Re: Help with Basic Calculated Field

              You call the function with the statement

              tax_state()

              This code needs to be placed in some event, maybe the onrowchange of the browse?

              I think you need to reconsider the section

              Code:
              'write to table
              	dim t as p
              	t = table.open("payroll_days")
              	t.enter_begin()
              	  t.st_tax_sum = vStTaxAmt
              	t.enter_end(.t.)
              This creates a new record in the payroll_days table and fills in the st_tax_sum field. It does not fill in any other fields in the new record. It does not fill in the st_tax_sum field for the current record as you might have intended.

              Screenshot shows the default browse of the payroll_days table after making

              tax_state() the event code for the onrowchange of the browse on the certify payroll form.
              There can be only one.

              Comment


                #8
                Re: Help with Basic Calculated Field

                John,
                The way you have it set, you have to place focus on the record that you want CHANGED. I used a browse button event to do this in the returned example to get focus on the record to change and 'fire' the function. HOWEVER. The script is not a table.open...table_enter, it is table.get.... table_change.
                Mike W
                __________________________
                "I rebel in at least small things to express to the world that I have not completely surrendered"

                Comment


                  #9
                  Re: Help with Basic Calculated Field

                  Just as a matter of interest, why cant this be an OnSaveRecord, Event?
                  Regards
                  Keith Hubert
                  Alpha Guild Member
                  London.
                  KHDB Management Systems
                  Skype = keith.hubert


                  For your day-to-day Needs, you Need an Alpha Database!

                  Comment


                    #10
                    Re: Help with Basic Calculated Field

                    Mike,
                    Is it possible without strike xB key ?

                    Comment


                      #11
                      Re: Help with Basic Calculated Field

                      John,
                      I am sorry.. I don't understand your question. the xB is a browse button. It is a calculated fied xb="" so there is a place to put the button.
                      Mike W
                      __________________________
                      "I rebel in at least small things to express to the world that I have not completely surrendered"

                      Comment


                        #12
                        Re: Help with Basic Calculated Field

                        Good morning, Mike

                        I mean without click on "the xB is a browse button".

                        Comment


                          #13
                          Re: Help with Basic Calculated Field

                          John,
                          yes there are other ways. It depends on how you are entering data. Try what Keith wrote about... place tax_state() in the table field rule CanSaveRecord or OnSaveRecord record event or try the form event CanSave or OnSave. See what works best for you. Start with the record CanSaveRecord first. None the less, I would replace the write to table portion of your script to:

                          Code:
                          'write to table
                          topparent:browse3:st_tax_sum.value = vStTaxAmt
                          Mike W
                          __________________________
                          "I rebel in at least small things to express to the world that I have not completely surrendered"

                          Comment


                            #14
                            Re: Help with Basic Calculated Field

                            Mike,
                            Thank you.

                            I tried on "OnSaveRecord" Field Rule and changed the script as
                            'write to table
                            dim t as p
                            t = table.get("payroll_days")

                            t.change_begin()
                            't.Payroll_id = vPayrollId
                            t.st_tax_sum = vStTaxAmt
                            t.change_end(.t.)

                            parentform.Resynch()
                            topparent:browse3.refresh()

                            END FUNCTION
                            So far, works fine.

                            Thank you for your help again.

                            Comment

                            Working...
                            X