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

Conflict between OnSave and CanSaveRecord?

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

    Conflict between OnSave and CanSaveRecord?

    I have two different scripts attached to two different events which seem to be in conflict with each other, but I'm having a difficult time isolating the issue. (See attached file.)

    The first script is attached to the form's OnSave event. It checks for certain conditions, and if they are met, enters a new record in another table.

    The second script is attached to the CanSaveRecord event in the field rules. It's function is to check for duplicates, and warn the user before allowing the duplicate to be saved. This script is a modification of Peter Wayne's example found at http://www.learn alpha.com/duplicate...ate_detect.htm.

    Each of these scripts work fine when the other is not present. However, if they are both being used, I get this error when I try to save the record:

    "Script:Table( Youth Bible School )CanSaveRecord line:26
    ix=t.query_create()
    no such field"

    When I first open the form, make a change and save it, no error appears. However, the CanSaveRecord event does not work, because I don't get a warning about duplicates, even when I know there is one. If I make a subsequent change and save it, the error appears.

    To make sure the problem wasn't something else in the form, I copied the code from the OnSave event to the default form for the table, and the problem persisted. I even moved the code for the OnSave event to the OnSaveRecord event in the field rules (modified it as necessary), and the problem remained. Does anyone have any ideas?

    Nathan

    #2
    Re: Conflict between OnSave and CanSaveRecord?

    Wonder if this is a timing issue? Try moving the CanSaveRecord script from field rules to the form's CanSave event, and add an xbasic_wait_for_idle() to the end of it. Then begin the OnSave event script with xbasic_wait_for_idle().

    -- tom

    Comment


      #3
      Re: Conflict between OnSave and CanSaveRecord?

      Tom,

      Thanks for your input. I did as you suggested, but unfortunately, the problem remains. Do you have any other ideas?

      Nathan

      Comment


        #4
        Re: Conflict between OnSave and CanSaveRecord?

        Nathan,

        You might try using the "trace events" option in the trace window to check the flow of events. Sometimes you'll see that the same event fires more than once. Maybe you'll see something there that will help. Otherwise I think you're going to have to post a working model (or a non-working model <grin>) for us to study. It might also be time to look for a different approach. For example, the button they push to save the record might do the validation before the record is committed. -- tom

        Comment


          #5
          Re: Conflict between OnSave and CanSaveRecord?

          Thanks, Tom.

          I'm not very familiar with the Trace Window, so when I looked at it, I couldn't tell if anything was amiss.

          I'd rather not force a user to click a button to save the record, since those who use this application are used to F9.

          I've attached a stripped down copy of the database. (Most of the buttons won't work.) Open the Youth Bible School form. (It should automatically open when you start the app.) Change something in the first record, and save it. You should get a warning about a duplicate record. Save it anyway, and make another change. The error will appear when you attempt to save it the second time.

          The code that seems to be in conflict is found in the CanSave and OnSave events.

          Nathan

          Comment


            #6
            Re: Conflict between OnSave and CanSaveRecord?

            The trace window is very useful. Read the Help file to understand what it can do. I'll take a look at the sample you posted. -- tom

            Comment


              #7
              Re: Conflict between OnSave and CanSaveRecord?

              In the OnSave event script where is var->YBS_date initialized? I can't see where vYBS_Yr is getting a value?

              -- tom

              Comment


                #8
                Re: Conflict between OnSave and CanSaveRecord?

                Nathan, I can't solve this using your current approach. I recommend again that you force the users to push a button to save the record, and that you use the button script to validate the record, save it, and update the second table. A shortcut key can be assigned to the save button so it should not be life changing for the users to get used to it. -- tom

                Comment


                  #9
                  Re: Conflict between OnSave and CanSaveRecord?

                  Tom/Nathan:

                  Any time I see that error, especially when queries are being run on the same form, I suspect that the query variables are stepping on one another. It's one of the reasons I user tbl.order() rather than tbl.query_create().

                  Any way, set the global variables

                  query.filter = ""
                  query.options = ""
                  query.order = ""

                  (which you should always do anyway) before running the query and it looks like that will take care of the problem.
                  Finian

                  Comment


                    #10
                    Re: Conflict between OnSave and CanSaveRecord?

                    Originally posted by Tom Cone Jr View Post
                    I recommend again that you force the users to push a button to save the record, and that you use the button script to validate the record, save it, and update the second table. A shortcut key can be assigned to the save button so it should not be life changing for the users to get used to it. -- tom
                    I do this all the time -- even for the F9 key:
                    Code:
                    IF a_user.key.value = "{F9}"
                         a_user.key.handled = .T.
                         IF a_user.key.event = "down"
                              parentform:Save_btn.push()
                         END IF
                         END'
                    END IF
                    (Of course, the "Save" button has to be named "Save_btn" if you want to use that script exactly as it is shown.)

                    This script has 2 advantages that I can think of immediately: (1) the user can still press the F9 key and (2) the same OnKey script can be used on every form even if the Save_btn has different actions to perform.

                    Of course, the same thing can be done for other buttons. As my standard, I use:
                    F8 = Ctrl-DownArrow (windows std for opening drop-downs from the keyboard - I do not normally like to let user switch to a browse with the F8 key which is the std. A5 action.)
                    F10 = Enter_btn (Starts new records)
                    F11 = Find_btn (Opens whatever Find dialog I may have created)
                    F12 = Done_btn (close form - which usually saves first and often does other things as well)

                    Comment


                      #11
                      Re: Conflict between OnSave and CanSaveRecord?

                      Sorry it has taken me so long to respond. I posted my last message just before I left the office for the weekend.

                      Thank you to all who looked at this problem. I really appreciate it! The issue has been resolved by clearing the query variables, as suggested by Finian. Thanks again!

                      Nathan

                      Comment


                        #12
                        Re: Conflict between OnSave and CanSaveRecord?

                        Nathan, that's great news. Thanks for posting the final results. -- tom

                        Comment

                        Working...
                        X