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

Cancelling new record entry on embedded browse

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

    Cancelling new record entry on embedded browse

    I am about to give up trying to find a work-around for this problem. Have an embedded browse of one table and one field on browse. Records already entered. On entering a new record, press enter and record saved and ready for next entry. Press Esc, new record entry canceled and last record of browse has focus.
    Now, if there was a way to code in pressing the esc key, all would be fine and dandy. Sys_send_keys("{Esc}") doesn't work in the field rules CanSaveRecord event. Have tried all the suggestions found so far on this "problem":

    t=table.current() ' or t=table.get("dailyentries")
    if t.fieldone="" .and. t.fieldtwo="" '(two fields are blank)
    if is_object("dailyentries")
    :dailyentries:browse1.cancel()
    end if
    end
    end if
    t=table.current() ' or t=table.get("dailyentries")
    if t.fieldone="" .and. t.fieldtwo="" '(two fields are blank)
    cancel()
    end if
    end
    end if
    Doesn't seem to make any difference whether the form is modal or modeless, or whether "continuous enters" is checked or not.
    Has anybody found a way around this problem that works?
    Thanks.
    Ernie

    #2
    Re: Cancelling new record entry on embedded browse

    Sorry, I've read your post twice and still don't know what the problem is.

    Here are some possibilities, all of which fit what you've described so far:

    a) you're trying to prevent blank records from being saved in an embedded browse?

    b) you're trying to prevent focus from shifting to a "new record" in the browse when the user presses ENTER key?

    c) you're trying to prevent focus from shifting to a "new record" when the user saves a row in the browse?

    Comment


      #3
      Re: Cancelling new record entry on embedded browse

      a) is correct.

      Comment


        #4
        Re: Cancelling new record entry on embedded browse

        Ok. A technique that's often recommended is to use the cancel() statement in a CanSaveRecord field rule event script. The save for the pending new record would be canceled by the script if the trimmed field length is zero. This has been discussed in lots of other threads, so you might try searching for example code.

        Comment


          #5
          Re: Cancelling new record entry on embedded browse

          Tom,
          The two quoted scripts in my first post above is what I have found in my search and they don't work.

          Code:
          t=table.current() ' or t=table.get("dailyentries")
          if t.fieldone="" .and. t.fieldtwo="" '(two fields are blank)
               if is_object("dailyentries")
                    :dailyentries:browse1.cancel()
               end if 
               end
          end if
          Code:
          t=table.current() ' or t=table.get("dailyentries")
          if t.fieldone="" .and. t.fieldtwo="" '(two fields are blank)
               cancel()
               end
          end if
          Guess I should have used the "Code" wrap instead of "Quote".
          Last edited by enstorms; 02-19-2011, 12:40 PM.

          Comment


            #6
            Re: Cancelling new record entry on embedded browse

            Ernie,

            your second script would work if you trimmed the field values.

            Alpha's native format (DBF) uses fixed width fields. When the user doesn't supply field values from keyboard alpha supplies blanks. Just as though the user pressed the spacebar over and over. These blanks fill up the fields and maintain the fixed width format. The point is that a field that "looks empty" will always have blank spaces within. Trimming removes the blank spaces. The same thing happens if the user enters 4 keystrokes into a field that is structured to hold 10. Alpha "pads" the input value with 6 blanks to maintain fixed width field structure. Surely, you've bumped into this before, right? Does this make sense?

            Anyway, here's an easy example for you. Try to enter a record to the invoices table that has an empty inv_desc field.

            Hope this helps.

            -- tom

            Comment


              #7
              Re: Cancelling new record entry on embedded browse

              Tom,
              Makes perfect sense. But I did not realize that if you didn't enter anything, something was entered, even if you can't see it.
              Thanks a bunch.
              Ernie

              Comment


                #8
                Re: Cancelling new record entry on embedded browse

                Tom,
                Your example works like I want it to. Mine doesn't and can't figure out why. Could you take a look when you get time?
                There are two tables. The stock_classes is the one I'm working in. Two forms. Open the wiz_livestock form. Click on <Add new Class> then click the next button to open another form. You'll notice that the new record is still there when the other form is opened. And when you close the other form, the wiz_livestock form is still in edit mode with the new record showing.
                I tried this in your example by putting a button on My_form and called a form for customers I created. When you push the button on yours to open a customer form, the new record disappears. I think I've got the same code in the CanSaveRecord event. But I'm starting to see double.
                Thanks. Appreciate your help.
                Ernie
                P.S. I'll be out for awhile, so no hurry.

                Comment


                  #9
                  Re: Cancelling new record entry on embedded browse

                  Ernie,
                  I took a short peek....you did not trim as Tom indicated to do....
                  Code:
                  dim t as p
                  t = table.current()
                  if [COLOR=Red]alltrim([/COLOR]t.ACCT_NAME )= "" then
                      cancel()
                  end if
                  Also, seems like a missing table that you have a posting rule for that brings up an error which prevents any testing....guess I could take it out but try using the alltrim() first.
                  Mike
                  __________________________________________
                  It is only when we forget all our learning that we begin to know.
                  It's not what you look at that matters, it's what you see.
                  Henry David Thoreau
                  __________________________________________



                  Comment


                    #10
                    Re: Cancelling new record entry on embedded browse

                    Ernie, I took a long look and cannot get the browse to behave correctly using vers 9. Data entry through browse objects is difficult to control at best, and I often avoid it. If you must, perhaps this alternative approach will work for you... perhaps not.

                    I've abandoned the field rule (cansaveevent record event), and now do all the work in the button push. Basically, I let alpha save the empty record and then delete it. Clumsy.

                    -- tom

                    Comment


                      #11
                      Re: Cancelling new record entry on embedded browse

                      Tom,
                      I thought yours might have been done in v10 since the icon was red. Wasn't sure if it would be different or not. I had thought about your solution, but had read a post in my searching where someone steered away from doing that, so thought I'd see if I could find other options. Guess not with v9.
                      Really do appreciate your help, as always.
                      Ernie

                      Comment


                        #12
                        Re: Cancelling new record entry on embedded browse

                        Ernie, my preferred solution for this kind of situation is to force the user to cancel or save any pending edits before shifting to a new form. This is made more difficult when one uses a browse object for data entry. I've begun using browses for navigation and display. But then use table based forms when entering or editing a record.

                        Comment


                          #13
                          Re: Cancelling new record entry on embedded browse

                          tested the following code placed on the CanDepart event of the browse in v9 using your sample and it seems to do what you want.

                          Code:
                          t=this.Table_Get()
                          if alltrim(t.stk_class) = "" .and. alltrim(t.notes) = ""  then
                              this.cancel()
                          end if
                          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


                            #14
                            Re: Cancelling new record entry on embedded browse

                            Thanks, Tim. Good idea.

                            Comment


                              #15
                              Re: Cancelling new record entry on embedded browse

                              Tim,
                              Thanks for the idea. I'll put that in my code bank. I can see where it would work if I went directly to the "Next" button, but if I pressed the up key to go to the previous record, it would still enter the blank record. However, I think my code prevents moving off the record to another record with the up/down keys. So only two options, press the Esc key or something other than on the browse itself. Would be nice to be able to code in a pressed Esc key. I think that would solve this whole issue.
                              Thanks again for taking a look.
                              Ernie

                              Comment

                              Working...
                              X